869. 重新排序得到 2 的幂
给定正整数 N ,我们按任何顺序(包括原始顺序)将数字重新排序,注意其前导数字不能为零。
如果我们可以通过上述方式得到 2 的幂,返回 true;否则,返回 false。
示例 1:
输入:1
输出:true
示例 2:
输入:10
输出:false
示例 3:
输入:16
输出:true
示例 4:
输入:24
输出:false
示例 5:
输入:46
输出:true
提示:
1 <= N <= 10^9
1 <= N <= 10^9,枚举1<<0~1<<29,比较排序后的结果
py
class Solution: def reorderedPowerOf2(self, n: int) -> bool: cmp=sorted([int(m) for m in str(n)]) for i in range(30): if sorted([int(m) for m in str(1<<i)])==cmp:return True return False
c++
class Solution { public: bool reorderedPowerOf2(int n) { string cmp=to_string(n); sort(cmp.begin(),cmp.end()); for(int i=0;i<30;i++){ string cmp1=to_string(1<<i); sort(cmp1.begin(),cmp1.end()); if(cmp1==cmp)return true; } return false; } };
Java
class Solution { public boolean reorderedPowerOf2(int n) { char[] cmp=String.valueOf(n).toCharArray(); Arrays.sort(cmp); for(int i=0;i<30;i++){ char[] cmp1=String.valueOf(1<<i).toCharArray(); Arrays.sort(cmp1); if(Arrays.equals(cmp1,cmp))return true; } return false; } }
Js
/** * @param {number} n * @return {boolean} */ var reorderedPowerOf2 = function(n) { let cmp=n.toString().split("").sort().join(""); for(let i=0;i<30;i++) if((1<<i).toString().split("").sort().join("")===cmp)return true; return false; };