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