檢查 Python 中是否可以透過移除一個字元使所有字元的頻率都相同


假設我們有一個小寫字串 s。我們必須檢查刪除一個字元後所有字元的頻率是否相同。

因此,如果輸入類似於 s = "abbc",則輸出將為 True,因為我們可以刪除一個 b 以獲得字串 "abc",其中每個元素的頻率為 1。

為了解決這個問題,我們將遵循以下步驟:

  • occurrence := 包含 s 中所有字元及其頻率的對映
  • 如果 s 中所有字元的出現次數相同,則
    • 返回 True
  • 對於 s 中的每個字元,執行以下操作:
    • occurrence[char] := occurrence[char] - 1
    • 如果 s 中所有字元的出現次數相同,則
      • 返回 True
    • occurrence[char] := occurrence[char] + 1
  • 返回 False

示例

讓我們看看下面的實現以更好地理解:

 線上演示

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))

輸入

"abbc"

輸出

True

更新於: 2021年1月18日

494 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.