ধরুন আমাদের একটি স্ট্রিং আছে, আমাদের চেক করতে হবে এটি একটি রিপিটিং স্ট্রিং কিনা।
সুতরাং, যদি ইনপুটটি স্ট্রিং ="helloworldhelloworld" এর মত হয়, তাহলে আউটপুট হবে True
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- n :=s এর আকার
- একটি ফাংশন সংজ্ঞায়িত করুন findFactors()। এটি n লাগবে
- f :=একটি নতুন সেট
- i :=1
- যখন i * i <=n, do
- যদি n mod i 0 এর মত হয়, তাহলে
- f এর মধ্যে (n / i) এর ভাগফল যোগ করুন
- f-এ i ঢোকান
- i :=i + 1
- যদি n mod i 0 এর মত হয়, তাহলে
- রিটার্ন f
- প্রধান পদ্ধতি থেকে, নিম্নলিখিতগুলি করুন -
- তথ্য :=findFactors(n)
- প্রত্যেক i এর জন্য, কর
- যদি i n এর মত হয়, তাহলে
- পরবর্তী পুনরাবৃত্তির জন্য যান
- ss :=s[সূচী ০ থেকে i-1]
- val :=s-এ ss এর উপস্থিতি
- যদি val (n/i) এর ভাগফলের সমান হয়, তাহলে
- সত্য ফেরান
- যদি 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