题目名称

给定一个二进制字符串 s 和一个正整数 n,如果对于 [1, n] 范围内的每个整数,其二进制表示都是 s 的 子字符串 ,就返回 true,否则返回 false 。

子字符串 是字符串中连续的字符序列

示例

输入:s = “0110”, n = 3
输出:true

输入:s = “0110”, n = 4
输出:false

题解

主要的思路是利用 toString 方法计算出数组转换成对应二级制数

使用倒序查找的方法是为了能够更快速的查找不符合条件的数组,减少对比次数

答案

1
2
3
4
5
6
7
8
9
10
11
12
13
14
/**
* @param {string} s
* @param {number} n
* @return {boolean}
*/
var queryString = function(s, n) {
for(let i = n; i > 0; i--) {
let str = i.toString(2)
if(s.indexOf(str) === -1) {
return false
}
}
return true
};