Giả sử chúng ta có một chuỗi s và một số k, chúng ta phải tìm số chuỗi con có độ dài k s, xuất hiện nhiều hơn một lần trong s.
Vì vậy, nếu đầu vào là s ="xxxyyy", k =2, thì đầu ra sẽ là 2
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- saw:=một danh sách mới
- đối với tôi trong phạm vi từ 0 đến kích thước là s - k, thực hiện
- t:=chuỗi con của s [từ chỉ số i đến i + k - 1]
- chèn chữ t vào cuối phần đã xem
- mp:=một bản đồ cho tất cả các phần tử riêng biệt đã thấy và sự xuất hiện của chúng
- trả về tổng của tất cả các lần xuất hiện của mỗi phần tử trong mp nơi số lần xuất hiện nhiều hơn 1
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, 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))
Đầu vào
"xxxyyy",2
Đầu ra
2