zoukankan      html  css  js  c++  java
  • 0869. Reordered Power of 2 (M)

    Reordered Power of 2 (M)

    题目

    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

    题意

    将一个整数x的各位数字重新组合后得到一个新数y(不以0开头),判断是否存在一个正好是2的幂的y。

    思路

    定义一个整数的规范形式为将其各位数排序后组成的字符串,那么只要两个整数的规范形式相同,我们就可以认为这两个整数是等价的。注意到已经限制了输入的N的范围,只需要将该范围内所有2的幂的规范形式存入HashSet,每次判断都将整数转化为规范形式再查找是否在HashSet中出现。


    代码实现

    Java

    class Solution {
        private Set<String> set = new HashSet<>();
    
        public Solution() {
            int i = 1;
            while (i <= 1000000000) {
                set.add(normalize(i));
                i *= 2;
            }
        }
    
        public boolean reorderedPowerOf2(int N) {
            return set.contains(normalize(N));
        }
    
        private String normalize(int N) {
            String[] arr = String.valueOf(N).split("");
            Arrays.sort(arr);
            return String.join("", arr);
        }
    }
    
  • 相关阅读:
    2. redis的数据类型
    1. redis简介
    6. 职责链设计模式
    9. 桥梁设计模式
    一. 序言
    网络中常见的面试题
    JDBC
    Mybatis批量操作数据的方法
    ORM框架的概述
    Mybatis动态sql技术
  • 原文地址:https://www.cnblogs.com/mapoos/p/14563232.html
Copyright © 2011-2022 走看看