🏒

1016. 子串能表示从 1 到 N 数字的二进制串

💛
难度: 中等

题目

给定一个二进制字符串 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

优化点