LC 869. Reordered Power of 2

Posted ethanhong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LC 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
 
Runtime: 11 ms, faster than 52.38% of Java online submissions for Reordered Power of 2.

 

class Solution {
  private char[] Ncarr;
  public boolean ispermutation(String astr){
    char[] acarr = astr.toCharArray();
    Arrays.sort(acarr);
    for(int i=0; i<acarr.length; i++){
      if(acarr[i] != Ncarr[i]) return false;
    }
    return true;
  }

  public boolean reorderedPowerOf2(int N) {
    if(N == 1 || N == 2) return true;
    String Nstr = Integer.toString(N);
    Ncarr = Nstr.toCharArray();
    Arrays.sort(Ncarr);
    int digitN = Nstr.length();
    int base = 2;
    List<String> tmplist = new ArrayList<>();
    while(true){
      String tmp = Integer.toString(base);
      if(tmp.length() == digitN) tmplist.add(tmp);
      if(((base >> 31) & 1) == 1) break;
      if(tmp.length() > digitN) break;
      base <<= 1;
    }
    for(String x : tmplist){
      if(ispermutation(x)) return true;
    }
    return false;
  }

}

 

 

以上是关于LC 869. Reordered Power of 2的主要内容,如果未能解决你的问题,请参考以下文章

[Math_Medium] 869. Reordered Power of 2

869. 重新排序得到 2 的幂枚举

Leecode 869. 重新排序得到 2 的幂——Leecode每日一题系列

[LeetCode] Reordered Power of 2 重新排序为2的倍数

LC2468.根据限制分割消息(枚举&模拟)

LC2468.根据限制分割消息(枚举&模拟)