Computer >> Máy Tính >  >> Lập trình >> Python

Kiểm tra xem tần suất của tất cả các ký tự có thể trở nên giống nhau hay không bằng một lần xóa trong Python

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