示例 1:
输入:1
输出:true
示例 2:
输入:10
输出:false
示例 3:
输入:16
输出:true
思路:不大于10的9次方的一共有30个数,分别统计这些数中每个数字的频数,并保存到哈希表。
对于一个给定的数字n,统计n中每个数字的频数。如果在哈希表中存在。则返回true。
class Solution {
public boolean reorderedPowerOf2(int n) {
int []number={1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072, 262144, 524288, 1048576, 2097152, 4194304, 8388608,16777216, 33554432, 67108864, 134217728, 268435456, 536870912};
Set<String> set=new HashSet<>();
for(int i:number) set.add(countnumber(i));
return set.contains(countnumber(n));
}
public String countnumber(int n){
char[] count=new char[10];
while(n>0){
++count[n%10];
n=n/10;
}
return new String (count);
}
}