栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【Java】869. 重新排序得到 2 的幂---两种解决方法,时间复杂度O(N)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Java】869. 重新排序得到 2 的幂---两种解决方法,时间复杂度O(N)

给定正整数 N ,我们按任何顺序(包括原始顺序)将数字重新排序,注意其前导数字不能为零。
如果我们可以通过上述方式得到 2 的幂,返回 true;否则,返回 false。
示例 1:
输入:1
输出:true
示例 2:
输入:10
输出:false
示例 3:
输入:16
输出:true
示例 4:
输入:24
输出:false
示例 5:
输入:46
输出:true
提示:

1 <= N <= 10^9

代码1:
public boolean reorderedPowerOf2(int n) {
        String s=reordered(n);
        int k=Integer.valueOf(s);
        int i = (int)(Math.log(k)/Math.log(2));
        String s1="";
        do{
            s1=reordered((int)Math.pow(2,i));
            if(s.equals(s1)){
                return true;
            }
            i++;
        }while(s1.length()<=s.length());
        return false;
    }
    public String reordered(int n) {
        char[] chars = String.valueOf(n).toCharArray();
        Arrays.sort(chars);
        return new String(chars);
    }

代码2:
public boolean reorderedPowerOf2(int n) {
        Set set=new HashSet<>();
         for(int i=1;i>0;i<<=1){
            set.add(reordered(i));
         }
         return set.contains(reordered(n));
    }
    public String reordered(int n) {
            char[] chars = String.valueOf(n).toCharArray();
            Arrays.sort(chars);
            return new String(chars);
    }

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/356429.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号