869. 重新排序得到 2 的冪
阿新 • • 發佈:2021-10-28
給定正整數 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; };