मान लीजिए हमारे पास एक स्ट्रिंग है, हमें यह जांचना है कि यह दोहराई जाने वाली स्ट्रिंग है या नहीं।
इसलिए, यदि इनपुट स्ट्रिंग ="helloworldhelloworld" जैसा है, तो आउटपुट सही होगा
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- n :=आकार का
- एक फ़ंक्शन को परिभाषित करें findFactors() । इसमें n . लगेगा
- f :=एक नया सेट
- मैं :=1
- जबकि मैं * मैं <=n, करते हैं
- यदि n mod i 0 के समान है, तो
- f में (n / i) का भागफल डालें
- i को f में डालें
- i :=i + 1
- यदि n mod i 0 के समान है, तो
- वापसी f
- मुख्य विधि से, निम्न कार्य करें -
- तथ्य:=कारक खोजें(n)
- प्रत्येक के लिए वास्तव में, करते हैं
- यदि मैं n के समान हूं, तो
- अगले पुनरावृत्ति के लिए जाएं
- ss :=s[सूचकांक 0 से i-1 तक]
- val :=ss में s की घटनाएँ
- यदि वैल (n/i) के भागफल के समान है, तो
- सही लौटें
- यदि मैं n के समान हूं, तो
- झूठी वापसी
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
class Solution: def solve(self, s): n = len(s) def findFactors(n): f = set() i = 1 while(i * i <= n): if(n % i == 0): f.add(int(n / i)) f.add(i) i+= 1 return f fact = findFactors(n) for i in fact: if(i == n): continue ss = s[:i] val = s.count(ss) if(val == int(n / i)): return True return False ob = Solution() print(ob.solve("helloworldhelloworld"))
इनपुट
"helloworldhelloworld"
आउटपुट
True