สมมติว่าเรามีสตริง s และตัวเลข k เราต้องหาจำนวนสตริงย่อยความยาว k ของ s ที่เกิดขึ้นมากกว่าหนึ่งครั้งใน s
ดังนั้น หากอินพุตเป็น s ="xxxyyy", k =2 เอาต์พุตจะเป็น 2
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- เห็น :=รายการใหม่
- สำหรับฉันในช่วง 0 ถึงขนาด s - k ทำ
- t :=สตริงย่อยของ s [จากดัชนี i ถึง i + k - 1]
- ใส่ t ที่ส่วนท้ายที่เห็น
- mp :=แผนที่สำหรับองค์ประกอบที่เห็นได้ชัดเจนและเหตุการณ์ที่เกิดขึ้น
- ส่งคืนผลรวมของการเกิดขึ้นทั้งหมดของแต่ละองค์ประกอบใน mp โดยที่การเกิดขึ้นมากกว่า 1
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
class Solution:
def solve(self, s, k):
from collections import Counter
seen = []
for i in range(len(s) - k + 1):
t = s[i : i + k]
seen.append(t)
s = Counter(seen)
return sum(1 for x in s.values() if x > 1)
ob = Solution()
print(ob.solve("xxxyyy",2)) อินพุต
"xxxyyy",2
ผลลัพธ์
2