在Python中查找所有元音字母按顺序最长的子字符串的程序

在Python中查找所有元音字母按顺序最长的子字符串的程序

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

  • 它必须包含所有5个元音字母。

  • 该字符串中的字母必须按字母顺序排序。

因此,如果输入是s =“aaioaaaaeiiouuooaauu”,那么输出将是10,因为子字符串是“aaaaeiiouu”,这是美丽的。

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

  • 元音 := 所有元音字母的列表[‘a’,’e’,’i’,’o’,’u’]

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

  • while l < s的大小,则

    • 有效 := 真

    • 对于元音中的每个元音,执行以下操作

      • 有效 := valid is true and (r < size of s and s[r] is same as vowel)

      • while r < size of s and s[r] is same as vowel, do

      • r := r + 1

    • 如果有效 is true, 那么

      • longest := maximum of longest and (r – l)
    • l := r

  • return 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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程