1. 程式人生 > 其它 >869. 重新排序得到 2 的冪

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;
};