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

解答:
就是逐个遍历从 1 到 N 的数字,转换成二进制字符串(去掉头部无用的 '0')看看是否在字符串 S 中,遇到不在的就返回 false, 要是都在就返回 true。
1 class Solution { 2 public: 3 bool queryString(string S, int N) 4 { 5 for(size_t i=1; i<=N; ++i) 6 { 7 string s = to_binary(i); 8 if(S.find(s, 0)==-1) 9 { 10 return false; 11 } 12 } 13 return true; 14 } 15 static string to_binary(int n) 16 { 17 string s; 18 while(n!=0) 19 { 20 s += to_string(n%2); 21 n /= 2; 22 } 23 s += to_string(n); 24 reverse(s.begin(), s.end()); 25 string::iterator it = s.begin()+1; 26 while(*(it-1)=='0') 27 { 28 s.erase(it-1); 29 } 30 return s; 31 } 32 };

浙公网安备 33010602011771号