粒叩869:重新排序得到 2 的冪
阿新 • • 發佈:2021-10-29
每日一題
給定正整數 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); } };