给定正整数 N ,我们按任何顺序(包括原始顺序)将数字重新排序,注意其前导数字不能为零。
如果我们可以通过上述方式得到 2 的幂,返回 true;否则,返回 false。
示例 1:
输入:1
输出:true
示例 2:
输入:10
输出:false
示例 3:
输入:16
输出:true
示例 4:
输入:24
输出:false
示例 5:
输入:46
输出:true
提示:
1 <= N <= 10^9
代码1:
public boolean reorderedPowerOf2(int n) {
String s=reordered(n);
int k=Integer.valueOf(s);
int i = (int)(Math.log(k)/Math.log(2));
String s1="";
do{
s1=reordered((int)Math.pow(2,i));
if(s.equals(s1)){
return true;
}
i++;
}while(s1.length()<=s.length());
return false;
}
public String reordered(int n) {
char[] chars = String.valueOf(n).toCharArray();
Arrays.sort(chars);
return new String(chars);
}
代码2:
public boolean reorderedPowerOf2(int n) {
Set set=new HashSet<>();
for(int i=1;i>0;i<<=1){
set.add(reordered(i));
}
return set.contains(reordered(n));
}
public String reordered(int n) {
char[] chars = String.valueOf(n).toCharArray();
Arrays.sort(chars);
return new String(chars);
}



