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