मान लीजिए हमारे पास एक स्ट्रिंग है, हमें यह जांचना है कि यह दोहराई जाने वाली स्ट्रिंग है या नहीं।
इसलिए, यदि इनपुट स्ट्रिंग ="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