Giả sử chúng ta có một chuỗi, chúng ta phải kiểm tra xem đó có phải là một chuỗi lặp lại hay không.
Vì vậy, nếu đầu vào là string ="helloworldhelloworld", thì đầu ra sẽ là True
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- n:=kích thước của s
- Xác định một hàm findFactors (). Điều này sẽ mất n
- f:=một tập hợp mới
- i:=1
- while i * i <=n, do
- nếu n mod i giống 0, thì
- chèn thương số của (n / i) vào f
- chèn i vào f
- i:=i + 1
- nếu n mod i giống 0, thì
- return f
- Từ phương pháp chính, hãy thực hiện như sau -
- thực tế:=findFactors (n)
- đối với mỗi tôi trên thực tế, hãy thực hiện
- nếu tôi giống n, thì
- chuyển sang lần lặp tiếp theo
- ss:=s [từ chỉ mục 0 đến i-1]
- val:=số lần xuất hiện của ss trong s
- nếu val giống với thương của (n / i), thì
- trả về True
- nếu tôi giống n, thì
- trả về Sai
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
Ví dụ
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"))
Đầu vào
"helloworldhelloworld"
Đầu ra
True