Python程式檢查是否可以獲得一對數字和任意數量的三元組數字


假設我們有一個數字字串 s。我們必須檢查是否有一些排列,我們可以有一對相同的字元,字串的其餘部分形成任意數量的相同字元的三元組。

因此,如果輸入類似於 s = "21133123",則輸出將為 True,因為有兩個 2 可以形成 "22" 作為對,"111"、"333" 作為兩個三元組。

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

  • d := 一個包含 s 中存在的每個元素頻率的列表

  • 對於 d 中的每個 k,執行以下操作:

    • d[k] := d[k] - 2

    • 如果對於 d 中的所有 i,d[i] 模 3 為 0,則

      • 返回 True

    • d[k] := d[k] + 2

  • 返回 False

示例

讓我們看看以下實現以獲得更好的理解

from collections import Counter
def solve(s):
   d = Counter(s)
   for k in d:
      d[k] -= 2
      if all(d[i] % 3 == 0 for i in d):
         return True
      d[k] += 2
   return False

s = "21133123"
print(solve(s))

輸入

"21133123"

輸出

True

更新於: 2021年10月12日

212 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.