欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

力扣OJ 869. 重新排序得到 2 的幂

程序员文章站 2022-06-21 12:37:02
...

题目:

给定正整数 N ,我们按任何顺序(包括原始顺序)将数字重新排序,注意其前导数字不能为零。

如果我们可以通过上述方式得到 2 的幂,返回 true;否则,返回 false。

 

示例 1:

输入:1
输出:true
示例 2:

输入:10
输出:false
示例 3:

输入:16
输出:true
示例 4:

输入:24
输出:false
示例 5:

输入:46
输出:true
 

提示:

1 <= N <= 10^9

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reordered-power-of-2
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

 

思路:

2的幂非常少,一个个匹配就行了。

列出所有的2的幂,依次判断是不是能对应上即可。

代码:

class Solution {
public:    
    bool isSame(int a,int b) {
        int num[10]={0};
        while(a>0){
            num[a%10]++;
            a/=10;
        }
        while(b>0){
            num[b%10]--;
            b/=10;
        }
        for(int i=0;i<10;i++){
            if(num[i]!=0){
                return false;
            }
        }
        return true;
    }
    bool reorderedPowerOf2(int N) {
        for(int i=0;i<30;i++){
            if(isSame(N,(1<<i))){
                return true; 
            }
        }
        return false;
    }
};

 

相关标签: new