Python 程式:查詢按順序排列的所有母音的最長子字串


假設我們有一個字串 s,其中只包含英文母音,我們需要找到 s 的最長美麗子字串的長度。如果找不到這樣的子字串,則返回 0。如果一個字串滿足以下條件,則稱其為美麗的:

  • 它必須包含所有 5 個母音至少一次。

  • 字母必須按字母順序排序。

因此,如果輸入類似於 s = "aaioaaaaeiiouuooaauu",則輸出將為 10,因為子字串 "aaaaeiiouu" 是美麗的。

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

  • vowels := 所有母音的列表 ['a', 'e', 'i', 'o', 'u']

  • l := 0, r := 0, longest := 0

  • 當 l < s 的大小,執行以下操作:

    • valid := True

    • 對於 vowels 中的每個母音,執行以下操作:

      • valid := valid 為真並且 (r < s 的大小且 s[r] 與母音相同)

      • 當 r < s 的大小且 s[r] 與母音相同,執行以下操作:

        • r := r + 1

    • 如果 valid 為真,則:

      • longest := longest 和 (r - l) 中的最大值

    • l := r

  • 返回 longest

示例

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

def solve(s):
   vowels = ['a', 'e', 'i', 'o', 'u']
   l, r, longest = 0, 0, 0
   while (l < len(s)):
      valid = True
      for vowel in vowels:
         valid &= (r < len(s) and s[r] == vowel)
         while (r < len(s) and s[r] == vowel):
            r += 1
      if (valid):
         longest = max(longest, r - l)
      l = r
   return longest

s = "aaioaaaaeiiouuooaauu"
print(solve(s))

輸入

"aaioaaaaeiiouuooaauu"

輸出

10

更新於: 2021 年 10 月 7 日

546 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.