在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