Starting with a positive integer N
, we reorder the digits in any order (including the original order) such that the leading digit is not zero.
Return true
if and only if we can do this in a way such that the resulting number is a power of 2.
Example 1:
Input: 1 Output: true
Example 2:
Input: 10 Output: false
Example 3:
Input: 16 Output: true
Example 4:
Input: 24 Output: false
Example 5:
Input: 46 Output: true
Note:
1 <= N <= 10^9
2的指数背小于10^9的也就30个数,全部求出来放到set里面,然后求N的permutation判断在不在set了
其实不必求permutation,吧2的指数排序后放到set,N转化为string后排序查找找不到set里
from itertools import permutations
class Solution:
def reorderedPowerOf2(self, n):
"""
:type N: int
:rtype: bool
"""
t=1
cands=set()
while t<=1000000000:
tt=sorted([ttt for ttt in str(t)])
cands.add(''.join(tt))
t*=2
tt=sorted([ttt for ttt in str(n)])
return ''.join(tt) in cands