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;
    }
};
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号