class Solution { public: int findTheLongestSubstring(string s) { /*需要找到状态为0的子序列[i,j],[i,j]=[0,j]-[0,i](两者状态相同时的差) */ int state=0,ans=0; vector<int> p(32,INT_MAX); p[0]=-1; for(int i=0;i<s.size();i++){ switch(s[i]){ case 'a':state^=1;break; case 'e':state^=2;break; case 'i':state^=4;break; case 'o':state^=8;break; case 'u':state^=16;break; default:break; } if(p[state]==INT_MAX)p[state]=i; else ans=max(ans,i-p[state]); } return ans; } };
题目:找到元音为偶数的最长子串。
ps:状态0的值应为-1;