描述
小牛有一个长度为n的字符串s,字符串仅包含小写英文字符。 定义元音字母为{a,e,i,o,u},其他字母为辅音字母。 请你在s中找到一个最长的元音回文子串,只需要输出其长度。 子串是指从原字符串中,选择一段连续的字符组成的新字符串。 一个长度为m的元音回文串t是指,对于任意i∈[1,m],如果t是元音,则需满足 ;如果ti是辅音,那么没有额外限制。
输入
第一行输入一个整数n(1≤n≤10^5),代表字符串的长度。 第二行输入一个长度为n且仅由小写英文字母组成的字符串s。
输出
在一行上输出一个整数,代表最长的元音回文串的长度。
输入1
5
abaeb
输出1
3
输入2
6
cccccc
输出2
6
python代码
def is_vowel(c):
return c in "aeiou"
def expand_from_center(s, left, right):
while left >= 0 and right < len(s):
if (is_vowel(s[left]) or is_vowel(s[right])) and s[left] != s[right]:
break
left -= 1def is_vowel(c):
return c in "aeiou"
def expand_from_center(s, left, right):
while left >= 0 and right < len(s):
if (is_vowel(s[left]) or is_vowel(s[right])) and s[left] != s[right]:
break
left -= 1
right += 1
# (right - 1) - (left + 1) + 1
return right - left - 1
if __name__ == '__main__':
n = int(input())
s = input()
max_length = 0
for i in range(n):
odd_length = expand_from_center(s, i, i)
max_length = max(max_length, odd_length)
if i < n - 1:
even_length = expand_from_center(s, i, i + 1)
max_length = max(max_length, even_length)
print(max_length)
right += 1
# (right - 1) - (left + 1) + 1
return right - left - 1
if __name__ == '__main__':
n = int(input())
s = input()
max_length = 0
for i in range(n):
odd_length = expand_from_center(s, i, i)
max_length = max(max_length, odd_length)
if i < n - 1:
even_length = expand_from_center(s, i, i + 1)
max_length = max(max_length, even_length)
print(max_length)
