思路
就是用5位数字存放a,e,i,o,u状态00000~11111,然后每次遇到a,e,i,o,u就分别修改一下状态,两个位置状态相同的时候,这两个位置的差就是答案。
class Solution {
public:
int findTheLongestSubstring(string s) {
int ans = 0,statu = 0,n=s.size();
vector<int>pos(1<<5,-1);
pos[0]=0;
for(int i=0;i<n;i++){
if(s[i]=='a'){
statu^=1<<0;
}else if(s[i]=='e'){
statu^=1<<1;
}else if(s[i]=='i'){
statu^=1<<2;
}else if(s[i]=='o'){
statu^=1<<3;
}else if(s[i]=='u'){
statu^=1<<4;
}
if(pos[statu]==-1){
pos[statu]=i+1;
}else {
ans=max(ans,i-pos[statu]+1);
}
}
return ans;
}
};