สมมุติว่าเรามี string เราต้องเช็คก่อนว่าเป็น string ซ้ำหรือไม่
ดังนั้น หากอินพุตเป็นเหมือน string ="helloworldhelloworld" ผลลัพธ์จะเป็น True
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- n :=ขนาดของ s
- กำหนดฟังก์ชัน findFactors() นี่จะใช้เวลา n
- f :=ชุดใหม่
- ผม :=1
- ในขณะที่ i * i <=n ทำ
- ถ้า n mod i เหมือนกับ 0 แล้ว
- แทรกผลหารของ (n / i) ลงใน f
- ใส่ i เข้าไปใน f
- ผม :=ผม + 1
- ถ้า n mod i เหมือนกับ 0 แล้ว
- กลับมา f
- จากวิธีหลัก ให้ทำดังต่อไปนี้ −
- ข้อเท็จจริง :=findFactors(n)
- สำหรับ i แต่ละคนจริงๆ ทำ
- ถ้าฉันเหมือนกับ n แล้ว
- ติดตามตอนต่อไป
- ss :=s[จากดัชนี 0 ถึง i-1]
- val :=การเกิด ss ใน s
- ถ้า val เท่ากับผลหารของ (n/i) แล้ว
- คืนค่า True
- ถ้าฉันเหมือนกับ 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