题目:
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、将10 ^ 9 范围内2的幂全部列表出来组成一个列表,也就32个,即2 ^ 32 。
2、将1的列表使用collection.Counter()统计组成每个元素的字典值,如64为"6":1, “4”: 1 。
3、再使用collection.Counter()将输入值N拆成相同的形式。
4、最后判断3的字典是否在2之中,是则为2的幂。
题解python代码:
class Solution:
def reorderedPowerOf2(self, N: int) -> bool:
all2power=[(2**i) for i in range(32)]
all2powercount=[collections.Counter(str(i)) for i in all2power]
# print(all2powercount, "\n")
ncount=collections.Counter(str(N))
# print(ncount)
return ncount in all2powercount
输入为564时,print输出为:
作者:yikeshu1415926
链接:https://leetcode-cn.com/problems/reordered-power-of-2/solution/zhong-xin-pai-xu-de-dao-2-de-mi-by-yikeshu1415926/
来源:力扣(LeetCode)https://leetcode-cn.com/problems/reordered-power-of-2/