难度: 中等
题目
给定一个二进制字符串 S(一个仅由若干 '0' 和 '1' 构成的字符串)和一个正整数 N,如果对于从 1 到 N 的每个整数 X,其二进制表示都是 S 的子串,就返回 true,否则返回 false。
示例 1:
输入:S = "0110", N = 3
输出:true
示例 2:
输入:S = "0110", N = 4
输出:false
提示:
1 <= S.length <= 1000
1 <= N <= 10^9
思路
bullshit: 一大早做到这题, 整天的心情都变好了呢
只需两个简单的 api, 就可以轻松完成此题
String.prototype.includes(string[, position]): 判断是否为子串, 返回 Boolean
Number.prototype.toString([radix]): 重写了 Object.prototype.toString() 方法, 接收要转换为的进制[2-36], 默认值为 10, 返回 string 格式的数据
题解
/**
* @param {string} s
* @param {number} n
* @return {boolean}
*/
var queryString = function(s, n) {
let current = 1
while (current !== n + 1) {
if (!s.includes(current.toString(2))) return false
current++
}
return true
};
结果
执行用时:68 ms, 在所有 JavaScript 提交中击败了87.50%的用户
内存消耗:37.5 MB, 在所有 JavaScript 提交中击败了62.50%的用户
通过测试用例:25 / 25