解法一
没想到什么好的思路,看的题解,发现都是暴力解法,再看这个数据范围感觉有点不可思议。。。
位数多的二进制数其实会包括位数少的二进制数,可以根据这个做一些剪枝。
class Solution {
public boolean queryString(String S, int N) {
int begin;
if (N == 1) {
begin = 1;
} else {
begin = 1 << (int) (Math.floor(Math.log(N) / Math.log(2)) - 1);
}
for (int i = begin; i <= N; ++i) {
if (!S.contains(Integer.toBinaryString(i))) {
return false;
}
}
return true;
}
}