ধরুন আমাদের একটি স্ট্রিং আছে, আমাদের চেক করতে হবে এটি একটি রিপিটিং স্ট্রিং কিনা।
সুতরাং, যদি ইনপুটটি স্ট্রিং ="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