小塔有一个长度为n的字符串s,字符串仅包含小写英文字符。 定义元音字母为a,e,i,o,u,其他字母为辅音字母。 请你在s中找到一个最长的元音回文子串,只需要输出其长度。 子串是指从原字符串中,选择一段连续的字符组成的新字符串。 一个长度为m的元音回文串t是指,对于任意i∈[1,m],如果t是元音,则需满足;如果是辅音,那么没有额外限制。
因为辅音对回文没有影响,所以直接全部替换成相同字母,问题转化成了给定一个字符串求最长回文子串,直接Manacher即可
c++
#include <bits/stdc++.h>
using namespace std;
char s[100005]; // 原始字符串
char t[300005]; // 转换后的字符串,包含分隔符
int p[200005]; // 存储每个字符为中心的回文半径