在 Python 中查詢其字元可以重新排列以形成給定單詞的子字串的數量


假設我們有一個字串 S(所有字母都小寫),我們需要找到所有長度為四的子字串的數量,這些子字串的字元可以重新排列以形成這個單詞“bird”。

因此,如果輸入類似於“birdb”,則輸出將為 2。

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

  • cnt := 0

  • 對於 i 從 0 到 s 的大小 - 3,執行

    • bird := 一個數組,值為 [0, 0, 0, 0]

    • 對於 j 從 i 到 i + 4,執行

      • 如果 s[j] 與 'b' 相同,則

        • bird[0] := bird[0] + 1

      • 否則,如果 s[j] 與 'i' 相同,則

        • bird[1] := bird[1] + 1

      • 否則,如果 s[j] 與 'r' 相同,則

        • bird[2] := bird[2] + 1

      • 否則,如果 s[j] 與 'd' 相同,則

        • bird[3] := bird[3] + 1

      • 如果 bird 與 [1,1,1,1] 相同,則

        • cnt := cnt + 1

  • 返回 cnt

示例

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

即時演示

def number_of_occurrence(s):
   cnt = 0
   for i in range(0, len(s) - 3):
      bird = [0, 0, 0, 0]
      for j in range(i, i + 4):
         if s[j] == 'b':
            bird[0] += 1
         elif s[j] == 'i':
            bird[1] += 1
         elif s[j] == 'r':
            bird[2] += 1
         elif s[j] == 'd':
            bird[3] += 1
      if bird == [1,1,1,1]:
         cnt += 1
   return cnt
s = "birdb"
print(number_of_occurrence(s))

輸入

"birdb"

輸出

2

更新於: 2020-08-19

215 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.