题目描述
给定正整数 N ,我们按任何顺序(包括原始顺序)将数字重新排序,注意其前导数字不能为零。
如果我们可以通过上述方式得到 2 的幂,返回 true;否则,返回 false。
样例描述
示例 1:
输入:1
输出:true
示例 2:
输入:10
输出:false
示例 3:
输入:16
输出:true
示例 4:
输入:24
输出:false
思路
打表 + 词频统计
- 10的9次方内2的幂次并不多,全部求出来一个个判断。
- 判断方法是词频统计:如果两个数一样,则它们包含的字符的个数一定一样。通过前一个将相同字符数加1,后一个碰到相同字符的就减1,如果最后抵消为0,说明个数一样,最后不为0说明不一样。
- 注意要后一个做减法前要提前判断,如果本身为0,说明前一个不存在该字符,那肯定就不一样。
代码
class Solution {
public boolean reorderedPowerOf2(int n)