869. Reordered Power of 2

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. 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
            
    

猜你喜欢

转载自blog.csdn.net/zjucor/article/details/81051155