用 Python 编写程序按顺序查找所有元音的最长子字符串

pythonserver side programmingprogramming更新于 2025/12/13 5:00:17

假设我们有一个只包含英语元音的字符串 s,我们必须找到 s 中最长的漂亮子字符串的长度。如果我们找不到这样的子字符串,则返回 0。如果字符串满足以下条件,则称其为漂亮字符串 −

  • 5 个元音中的每一个都必须至少出现一次。

  • 字母必须按字母顺序排序

因此,如果输入为 s = "aaioaaaaeiiouuooaauu",则输出将为 10,因为子字符串为 "aaaaeiiouu"这很漂亮。

为了解决这个问题,我们将遵循以下步骤 −

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

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

  • while l < s 的大小,执行

    • valid := True

    • 对于元音中的每个元音,执行

      • valid := valid 为真且 (r < s 的大小且 s[r] 与元音相同)

      • 当 r < s 和 s[r] 的大小与元音相同,则执行

        • r := r + 1

    • 如果有效为真,则

      • 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

相关文章


有用资源