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

來源:力扣(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); } };