其他分享
首页 > 其他分享> > 粒叩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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reordered-power-of-2

暴力法

2的幂在给定范围1 <= N <= 10^9内一共有29种排列(2^30=1 073 741 824)

计算这29种排列,并将其按从小到大的顺序排列放到无序集合中

将输入的数字转成字符串也按从小到大的顺序排列

最后判断输入数字重排后的字符串是否在范围内2的幂的重排集合中即可

class Solution {
public:
    bool reorderedPowerOf2(int n) {
        string num;
        unordered_set<string> a={"1", "2", "4", "8", "16", "23", "46", "128", "256", "125", "0124", "0248", "0469", "1289", "13468", "23678", "35566", "011237", "122446", "224588", "0145678", "0122579", "0134449", "0368888", "11266777", "23334455", "01466788", "112234778", "234455668", "012356789", "0112344778"};
        num=to_string(n);
        sort(num.begin(),num.end());
        return a.count(num);
    }
};

标签:869,输出,false,示例,num,重新,排序,true,输入
来源: https://www.cnblogs.com/CelesteJourney/p/15478120.html