Giả sử chúng ta có một chuỗi chữ thường s. Chúng tôi phải kiểm tra xem tần số của tất cả các ký tự có giống nhau sau khi xóa một ký tự hay không.
Vì vậy, nếu đầu vào là s ="abbc", thì đầu ra sẽ là True vì chúng ta có thể xóa một b để nhận được chuỗi "abc" trong đó tần số của mỗi phần tử là 1.
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- xuất hiện:=một bản đồ với tất cả các ký tự của s và tần số của chúng
- nếu lần xuất hiện của tất cả các ký tự trong s là giống nhau, thì
- trả về True
- đối với mỗi ký tự trong s, thực hiện
- Lần xuất hiện [char]:=Lần xuất hiện [char] - 1
- nếu lần xuất hiện của tất cả các ký tự trong s là giống nhau, thì
- trả về True
- Lần xuất hiện [char]:=Lần xuất hiện [char] + 1
- trả về Sai
Ví dụ
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
from collections import defaultdict def allSame(occurrence): counts = list(occurrence.values()) return all(element == counts[0] for element in counts) def solve(s): occurrence = defaultdict(int) for char in s: occurrence[char] += 1 if allSame(occurrence): return True for char in s: occurrence[char] -= 1 if allSame(occurrence): return True occurrence[char] += 1 return False s = "abbc" print(solve(s))
Đầu vào
"abbc"
Đầu ra
True