题目链接: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;
}
};
标签:子串,false,string,二进制,return,1016,1000
From: https://www.cnblogs.com/lxycoding/p/17392184.html