题目
类型:Array
解题思路
举例入参为46
- 经过代码中的init方法,首先会把1到10的9次方所有偶数(也就是2的幂)都通过countDigits方法计算一遍
- countDigits所做的工作就是初始化10位数的char数组,把4和6上的位置1,然后转成string存到HashSet里面
- 然后所有数字都初始化之后再判断入参经过countDigits方法后是否存在于Set中

代码
class Solution {Set<String> powerOf2Digits = new HashSet<String>();public boolean reorderedPowerOf2(int n) {init();return powerOf2Digits.contains(countDigits(n));}public void init() {for (int n = 1; n <= 1e9; n <<= 1) {powerOf2Digits.add(countDigits(n));}}public String countDigits(int n) {char[] cnt = new char[10];while (n > 0) {++cnt[n % 10];n /= 10;}return new String(cnt);}}
