力扣1016题:子串能表示从 1 到 N 数字的二进制串
题目描述:
难度中等59
给定一个二进制字符串
s
和一个正整数n
,如果对于[1, n]
范围内的每个整数,其二进制表示都是s
的 子字符串 ,就返回true
,否则返回false
。子字符串 是字符串中连续的字符序列。
题解思路:
1.先算出 [1,n]的每个二进制字符串,Java借助Integer.toBinaryString()方法,将每个整数转为二进制;
2.再每一个去和s进行判断,借助s.contains(b)方法,判断s中是否有b
class Solution {
public boolean queryString(String s, int n) {
for (int i=1;i<=n;i++){
String b = Integer.toBinaryString(i);
if (!s.contains(b)){
return false;
}
}
return true;
}
}