Leetcode 1461. 检查一个字符串是否包含所有长度为 K 的二进制子串
给你一个二进制字符串 s 和一个整数 k 。如果所有长度为 k 的二进制字符串都是 s 的子串,请返回 true ,否则请返回 false 。
截取每个长度为 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;
}
}