zoukankan      html  css  js  c++  java
  • 把数组排成最小的数

    题目描述:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。

    分析:

     不能直接调用Arrays.sort,因为这里是整数int数组,而传入的比较器是Integer,不匹配,所以将数组存到list中

     * 排序规则如下:字符串拼接

     * 若ab > ba 则 a > b,

     * 若ab < ba 则 a < b,

     * 若ab = ba 则 a = b;

     * 解释说明:

     * 比如 "3" < "31"但是 "331" > "313",所以要将二者拼接起来进行比较。

    题目要求最小的数,所以就是从小到大排序即可。

    比较器原来返回值:正数,o1>o2,  为从小到大排序

    现在还是从小到大,所以比较器返回正时,还是表示o1>o2,也就是o1o2>o2o1

    代码:

    package sort;

     

    import java.util.ArrayList;

    import java.util.Collections;

    import java.util.Comparator;

     

    public class Demo11 {

             public static void main(String[] args){

                       int[] a={3,32,321};

                       System.out.println(printArray(a));

             }

             public static String printArray(int[] a){

                      

                       ArrayList<Integer> list=new ArrayList<>();

                       for(int i=0;i<a.length;i++)

                                list.add(a[i]);

                      

                       Collections.sort(list, new Comparator<Integer>(){

     

                                @Override

                                public int compare(Integer o1, Integer o2) {

                                         String s1=o1+""+o2;

                                         String s2=o2+""+o1;

                                         return s1.compareTo(s2);

                                }

     

                      

                               

                       });

                      

                       StringBuilder sb=new StringBuilder();

                      

                       for(int i:list)

                                sb.append(i);

                      

                       return sb.toString();

                      

             }

            

    }

  • 相关阅读:
    rest webapi 返回数据
    下载指定路径的文件到本地服务器
    NPOI excel文件解析
    (Demo分享)利用JavaScript(JS)实现一个九宫格拖拽功能
    关于DOM的理解
    (Demo分享)利用JavaScript(JS)做一个可输入分钟的倒计时钟功能
    关于闭包函数和递归函数的详细理解
    纯CSS制作加<div>制作动画版哆啦A梦
    冒泡排序
    Python常用模块及正则表达式知识点,你需要了解的全在这了
  • 原文地址:https://www.cnblogs.com/xiaolovewei/p/7922971.html
Copyright © 2011-2022 走看看