题目链接: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