美文网首页
(01状压)超赞字符子串

(01状压)超赞字符子串

作者: 小幸运Q | 来源:发表于2021-05-09 14:02 被阅读0次

image.png

要求一个连续字串,最多只有一个数重复出现奇数次,其他都是偶数次或者没出现。

剑指有类似题目,通过异或=0使偶数次消去,只剩下唯一的奇数次数。但是这道题只有0-9,所以可以通过异或1<<0 (2^0)到1<<9 (2^9),得到压缩后的status,只关注0-9是否重复出现。

(1)得到一个当前值异或后的newstatus

(2)通过依次跟1<<0到1<<9异或得到newstatus,查看之前遍历存储的status map里面是否有对应的status,如果有那么更新res,res = max(res,id-map[newstatus])

(3)如果map查不到newstatus,那么就map[newstatus]=id 更新map (我们只需要保留该status离id最远的那个最左端点)

class Solution {
public:
    int longestAwesome(string s) {
        if(s.length()==0){
            return 0;
        }
        unordered_map<int,int>m;
        m[0]=-1;
        int odd=0;
        int res=1;
        for(int i=0;i<s.length();i++){
            odd^=(1<<(s[i]-'0'));
            // double
            if(m.count(odd)==0){
                m[odd]=i;
            }
            res=max(res,i-m[odd]);
            // odd
            for(int j=0;j<10;j++){
                if(m.count(odd^(1<<j))>0){
                    res=max(res,i-m[odd^(1<<j)]);
                }
            }           
        }
        return res;
    }
};

相关文章

  • (01状压)超赞字符子串

    要求一个连续字串,最多只有一个数重复出现奇数次,其他都是偶数次或者没出现。 剑指有类似题目,通过异或=0使偶数次消...

  • (状压dp)1915. 最美子字符串的数目

    1915. 最美子字符串的数目[https://leetcode-cn.com/problems/number-o...

  • jq的字符串操作

    字符串拼接 字符串长度 子串 split trim 子串替换

  • 判断一个字符串是否是另一个字符串的子串

    题目 判断一个字符串是否是另一个字符串的子串例如,字符串1=abcdefgh子字符串2=def 是字符串1的子串子...

  • day3 字符串

    01 认识字符串 02 获取字符串的字符 03 字符串运算符 04 字符串相关方法 05 if语句 01认识字符串...

  • 647. 回文子串

    一 题目: 二 思路: 动态规划法 状态:dp[i][j] 表示字符串s在[i,j]区间的子串是否是一个回文串。状...

  • 十、Swift3.0之字符串长度、拼接、格式化及子串

    遍历。 字符串长度 拼接字符串. 格式化字符串 字符串的子串。关于字符串子串这一块,强烈建议通过NSString作...

  • 2017.10.17C#

    今天上午老师讲了字符串比较,定位字符串和子串,定位,截取子串,字符串转换字符数组,分隔字符串,类型转换! 下午继续...

  • 字符串

    说明空串是任意字符串的子串 串中任意个数的连续字符组成的子序列称为该串的子串 不区分大小写判断字符串是否含有子串 ...

  • 王道程序员求职宝典(二)字符串

    字符串 字符串子串子序列不要求连续,但顺序相同 c风格字符串末尾'\0' 标准字符串处理函数strlenstrcm...

网友评论

      本文标题:(01状压)超赞字符子串

      本文链接:https://www.haomeiwen.com/subject/xlwmdltx.html