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

题目链接:1016. 子串能表示从 1 到 N 数字的二进制串

方法:思维

解题思路

 由题目可知,字符串 \(s\) 的最大长度为 \(1000\),那么其最多能表示的不同的二进制数不超过 \(1000\) 个。因此当 \(n > 1000\) 时,直接返回 \(false\);否则遍历 \([1, n]\) 判断是否符合题意。

代码

class Solution {
public:
    bool queryString(string s, int n) {
        if (n > 1000) return false;
        for (int i = 1; i <= n; i ++ ) {
            string b = bitset<32>(i).to_string();
            b = b.substr(b.find('1'));
            if (s.find(b) == string::npos) return false;
        }
        return true;
    }
};
posted @ 2023-05-11 20:36  lixycc  阅读(32)  评论(0)    收藏  举报