返回介绍

solution / 0800-0899 / 0869.Reordered Power of 2 / README_EN

发布于 2024-06-17 01:03:33 字数 2696 浏览 0 评论 0 收藏 0

869. Reordered Power of 2

中文文档

Description

You are given an 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 so that the resulting number is a power of two_.

 

Example 1:

Input: n = 1
Output: true

Example 2:

Input: n = 10
Output: false

 

Constraints:

  • 1 <= n <= 109

Solutions

Solution 1

class Solution:
  def reorderedPowerOf2(self, n: int) -> bool:
    def convert(n):
      cnt = [0] * 10
      while n:
        n, v = divmod(n, 10)
        cnt[v] += 1
      return cnt

    i, s = 1, convert(n)
    while i <= 10**9:
      if convert(i) == s:
        return True
      i <<= 1
    return False
class Solution {
  public boolean reorderedPowerOf2(int n) {
    String s = convert(n);
    for (int i = 1; i <= Math.pow(10, 9); i <<= 1) {
      if (s.equals(convert(i))) {
        return true;
      }
    }
    return false;
  }

  private String convert(int n) {
    char[] cnt = new char[10];
    for (; n > 0; n /= 10) {
      cnt[n % 10]++;
    }
    return new String(cnt);
  }
}
class Solution {
public:
  bool reorderedPowerOf2(int n) {
    vector<int> s = convert(n);
    for (int i = 1; i <= pow(10, 9); i <<= 1)
      if (s == convert(i))
        return true;
    return false;
  }

  vector<int> convert(int n) {
    vector<int> cnt(10);
    for (; n; n /= 10) ++cnt[n % 10];
    return cnt;
  }
};
func reorderedPowerOf2(n int) bool {
  convert := func(n int) []byte {
    cnt := make([]byte, 10)
    for ; n > 0; n /= 10 {
      cnt[n%10]++
    }
    return cnt
  }
  s := convert(n)
  for i := 1; i <= 1e9; i <<= 1 {
    if bytes.Equal(s, convert(i)) {
      return true
    }
  }
  return false
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文