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