zoukankan      html  css  js  c++  java
  • 【LeetCode】1371. 每个元音包含偶数次的最长子字符串

    题目

    给你一个字符串 s ,请你返回满足以下条件的最长子字符串的长度:每个元音字母,即 'a','e','i','o','u' ,在子字符串中都恰好出现了偶数次。

    示例 1:

    输入:s = "eleetminicoworoep"
    输出:13
    解释:最长子字符串是 "leetminicowor" ,它包含 e,i,o 各 2 个,以及 0 个 a,u 。
    

    示例 2:

    输入:s = "leetcodeisgreat"
    输出:5
    解释:最长子字符串是 "leetc" ,其中包含 2 个 e 。
    

    示例 3:

    输入:s = "bcbcbc"
    输出:6
    解释:这个示例中,字符串 "bcbcbc" 本身就是最长的,因为所有的元音 a,e,i,o,u 都出现了 0 次。
    

    提示:

    • 1 <= s.length <= 5 x 10^5
    • s 只包含小写英文字母。

    思路

    参考官方题解

    代码

    class Solution {
    public:
        int findTheLongestSubstring(string s) {
            int ans = 0, status = 0, n = s.size();
            vector<int> pos(1 << 5, -1);
            pos[0] = 0;
            for (int i = 0; i < n; ++i) {
                if (s[i] == 'a') status ^= 1 << 0;
                else if (s[i] == 'e') status ^= 1 << 1;
                else if (s[i] == 'i') status ^= 1 << 2;
                else if (s[i] == 'o') status ^= 1 << 3;
                else if (s[i] == 'u') status ^= 1 << 4;
                if (pos[status] != -1) ans = max(ans, i + 1 - pos[status]);
                else pos[status] = i + 1;
            }
            return ans;
        }
    };
    
  • 相关阅读:
    数据仓库的一些理解(转)
    常见ETL工具一览,你知多少?
    dhcpv6开源软件配置
    svn
    js原型模式
    combo扩展:禁止手工改变输入框的值
    SQLite错误总结 error code 19: constraint failed
    ntp源码解读(一)
    ntp-keygen.c
    6.2.2认证
  • 原文地址:https://www.cnblogs.com/galaxy-hao/p/12925508.html
Copyright © 2011-2022 走看看