Day 8:1461. 检查一个字符串是否包含所有长度为 K 的二进制子串

51 阅读1分钟

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

给你一个二进制字符串 s 和一个整数 k 。如果所有长度为 k 的二进制字符串都是 s 的子串,请返回 true ,否则请返回 false 。

image.png

截取每个长度为 k 的字符串,加入 Set 中,它包含所有的长度为 k 的二进制字符串,那么 set 的大小就是 2^k。

完整代码

class Solution {
    public boolean hasAllCodes(String s, int k) {
        Set<String> set = new HashSet<String>();
        int count = (int) Math.pow(2, k);

        int n = s.length();
        for (int i = k; i <= n; i++) {
            set.add(s.substring(i - k ,i));

            if (set.size() == count) return true;
        }
        
        return false;
    }
}