本文主要是介绍力扣1371.每个元音包含偶数次的最长子字符串,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
力扣1371.每个元音包含偶数次的最长子字符串
-
状态压缩 + 前缀和
- 用一个二进制的五位数存每种元音字母的出现次数
- 同时记录每种情况第一次出现的下标
-
class Solution {public:int findTheLongestSubstring(string s) {vector<int> pre(32,INT_MAX);pre[0] = -1;int n = s.size();int cur = 0,ans = 0;for(int i=0;i<n;i++){if(s[i] == 'a')cur ^= 1 << 0;else if(s[i] == 'e')cur ^= 1 << 1;else if(s[i] == 'i')cur ^= 1 << 2;else if(s[i] == 'o')cur ^= 1 << 3;else if(s[i] == 'u')cur ^= 1 << 4;if(pre[cur] == INT_MAX) pre[cur] = i;else ans = max(ans,i - pre[cur]);}return ans;}};
这篇关于力扣1371.每个元音包含偶数次的最长子字符串的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!