解法一

没想到什么好的思路,看的题解,发现都是暴力解法,再看这个数据范围感觉有点不可思议。。。
位数多的二进制数其实会包括位数少的二进制数,可以根据这个做一些剪枝。

  1. class Solution {
  2. public boolean queryString(String S, int N) {
  3. int begin;
  4. if (N == 1) {
  5. begin = 1;
  6. } else {
  7. begin = 1 << (int) (Math.floor(Math.log(N) / Math.log(2)) - 1);
  8. }
  9. for (int i = begin; i <= N; ++i) {
  10. if (!S.contains(Integer.toBinaryString(i))) {
  11. return false;
  12. }
  13. }
  14. return true;
  15. }
  16. }