Medium
Binary String With Substrings Representing 1 To N — C++
Full explanation · Time O(n^2) · Space O(1)
// Time: O(n^2), n is the length of S
// Space: O(1)
class Solution {
public:
bool queryString(string S, int N) {
// since S with length n has at most different n-k+1 k-digit numbers
// => given S with length n, valid N is at most 2(n-k+1)
// => valid N <= 2(n-k+1) < 2n = 2 * S.length
for (int i = N; i > N / 2; --i) {
// if bin_i is a substring of S, bin_i/2 is too
const auto& b = bitset<32>(i).to_string();
if (S.find(b.substr(b.find("1"))) == string::npos) {
return false;
}
}
return true;
}
};