869. 重新排序得到 2 的幂

exiaohu 于 2021-10-28 发布

题目链接:869. 重新排序得到 2 的幂

判断一个数字重新排列能不能成为 2 的幂,就是通过一种『字符顺序不变』的方式判断两个字符串是否相等。通过将字符串中的所有字符按 ascii 码排序即可。

由于输入是 10^10 内,预先计算好范围内所有的 2 的幂的值,然后逐一比较即可。

class Solution:
    def __init__(self):
        self.data = []
        i = 1
        while i <= 10 ** 10:
            self.data.append(''.join(sorted(str(i))))
            i = i << 1

    def reorderedPowerOf2(self, n: int) -> bool:
        for datum in self.data:
            if datum == ''.join(sorted(str(n))):
                return True

        return False