Leetcode # 869. Reordered Power of 2

Problem

https://leetcode.com/problems/reordered-power-of-2

Solution 

  • The leading digit is not zero. ⇒ 只要檢驗與 n 等長的 2k
  • 1 <= n <= 109 ⇒ ∀ i = 0, 1, 2, …, 9; Counter(str(n))[str(i)] ≤ 9
  • x_code :=
    {type(x_code).__name__ = ‘str’, type(x).__name__ = ‘int’ | x_code[i] == str(Counter(str(x))[str(i)])}

Time Complexity: O(log(n))
Space Complexity: O(1)
(The input and output generally do not count towards the space complexity.)

class Solution:
  def reorderedPowerOf2(self, n: int) -> bool:
    str_n = str(n)
    n_digits = Counter(str_n)
    n_code = code = "".join([str(n_digits[str(i)]) for i in range(10)])
    
    p = 1
    while (p_len := int(log10(p)) + 1) <= len(str_n):
      if p_len == len(str_n):
        p_digits = Counter(str(p))
        p_code = "".join([str(p_digits[str(i)]) for i in range(10)])
        if p_code == n_code: return True
      p *= 2
    
    return False

Last Updated on 2025/08/13 by A1go

目錄
Bitnami