LeetCode 1461. Check If a String Contains All Binary Codes of Size K

🔗 https://leetcode.com/problems/check-if-a-string-contains-all-binary-codes-of-size-k

题目

  • 给一个字符串 s,由 0 和 1 构成
  • 判断由长度 k 组成的所有二进制编码的字符串,是否都是 s 的 substring

思路

  • rolling hash
  • 滑动窗口长度 k,判断字符串是否可以组成所有 [0, 2^k)

代码

cpp 复制代码
class Solution {
public:
    bool hasAllCodes(string s, int k) {
        if (s.size() < k) return false;
        set<long long> st;
        long long num = 0;
        for (int i = 0; i < k; i++) {
            num = num * 2 + s[i] - '0';
        }
        st.insert(num);
        for (int i = k; i < s.size(); i++) {
            if (s[i-k] == '1') num = num - pow(2, k-1);
            num = num * 2 + s[i] - '0';
            st.insert(num);
        }
        return st.size() == (pow(2, k));        
    }
};
相关推荐
张李浩19 小时前
Leetcode 054螺旋矩阵 采用方向数组解决
算法·leetcode·矩阵
big_rabbit050219 小时前
[算法][力扣101]对称二叉树
数据结构·算法·leetcode
美好的事情能不能发生在我身上20 小时前
Hot100中的:贪心专题
java·数据结构·算法
2301_8217005320 小时前
C++编译期多态实现
开发语言·c++·算法
xixihaha132420 小时前
C++与FPGA协同设计
开发语言·c++·算法
程序员小远21 小时前
软件测试之功能测试详解
自动化测试·软件测试·python·功能测试·测试工具·职场和发展·测试用例
小小怪75021 小时前
C++中的函数式编程
开发语言·c++·算法
xixixiLucky21 小时前
编程入门算法题---小明爬楼梯求爬n层台阶一共多少种方法
算法
剑锋所指,所向披靡!21 小时前
数据结构之线性表
数据结构·算法
m0_672703311 天前
上机练习第49天
数据结构·算法