สมมุติว่าเรามี 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