Leetcode 5409. 检查一个字符串是否包含所有长度为 K 的二进制子串 题解

题目链接:https://leetcode-cn.com/problems/check-if-a-string-contains-all-binary-codes-of-size-k/
在这里插入图片描述
在这里插入图片描述
难顶,一看见子串这种东西就晕乎

看了题解,滑动窗口枚举所有出现的子串,最后判断总个数是否与预期相同即可。

代码如下:

class Solution {
public:
    bool hasAllCodes(string s, int k) {

        int cur = 0;
        for(int i = 0; i < k - 1; i ++)
            cur = 2 * cur + (s[i] == '1');

        unordered_set<int> set;
        for(int i = k - 1; i < s.size(); i ++){
            cur = cur * 2 + (s[i] == '1');
            set.insert(cur);
            cur &= ~(1 << (k - 1));
        }
        return set.size() == (1 << k);
    }
};

猜你喜欢

转载自blog.csdn.net/weixin_42396397/article/details/106451574