1016. Binary String With Substrings Representing 1 To N
Description
Given a binary string s and a positive integer n, return true if the binary representation of all the integers in the range [1, n] are substrings of s, or false otherwise.
A substring is a contiguous sequence of characters within a string.
Example 1:
Input: s = "0110", n = 3 Output: true
Example 2:
Input: s = "0110", n = 4 Output: false
Constraints:
1 <= s.length <= 1000s[i]is either'0'or'1'.1 <= n <= 109
Solutions
Solution 1: Brain Teaser
We observe that the length of string \(s\) does not exceed \(1000\), so string \(s\) can represent at most \(1000\) binary integers. Therefore, if \(n \gt 1000\), then \(s\) definitely cannot represent the binary representation of all integers in the range \([1,.. n]\).
Additionally, for an integer \(x\), if the binary representation of \(x\) is a substring of \(s\), then the binary representation of \(\lfloor x / 2 \rfloor\) is also a substring of \(s\). Therefore, we only need to check whether the binary representations of integers in the range \([\lfloor n / 2 \rfloor + 1,.. n]\) are substrings of \(s\).
The time complexity is \(O(m^2 \times \log m)\) and the space complexity is \(O(\log n)\), where \(m\) is the length of string \(s\) and \(n\) is the positive integer given in the problem.
1 2 3 4 5 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | |
1 2 3 4 5 6 7 8 9 10 11 | |
1 2 3 4 5 6 7 8 9 10 11 | |
1 2 3 4 5 6 7 8 9 10 11 | |