代码拉取完成,页面将自动刷新
思路:
bit+prefix sum
代码:
class Solution {
public:
int findTheLongestSubstring(string s) {
int res=0;
unordered_set<char>vowel={'a','e','i','o','u'};
unordered_map<int,int>hash;
vector<int>A(26);
for(int i=0;i<s.size();i++){
char c=s[i];
if(vowel.find(c)!=vowel.end()){
A[c-'a']++;
}
int bit=encode(A);
if(bit==0)res=max(res,i+1);
else{
if(hash.count(bit)!=0){
int index=hash[bit];
res=max(res,i-index);
}else{
hash[bit]=i;
}
}
}
return res;
}
int encode(vector<int>& A){
int res=0;
for(int i=0;i<A.size();i++){
if(A[i]%2==1)res=res|(1<<i);
}
return res;
}
};
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。