zoukankan      html  css  js  c++  java
  • 剑指offer 32.把数组排成最小的数

    剑指offer 32.把数组排成最小的数

    题目

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

    思路

    思路就是,先建一个ArrayList存放数字,对这个进行排序,然后转换成字符串。问题就是中间的排序,排序直接用了sort,改一下比较器就行,假设有两个数字,12,34,1234<3412,所以12就往前面排,以此类推,最后得到答案。

    代码

      public static String PrintMinNumber(int[] numbers) {
        StringBuffer str = new StringBuffer();
        ArrayList<Integer> list = new ArrayList<>();
        for (int i:numbers) {
          list.add(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);
          }
        });
        for (int i:list){
          str.append(i);
        }
        return str.toString();
      }
    
  • 相关阅读:
    暑假第二周总结
    7.18-7.24 第一周周报
    poj 3295 Tautology
    2016多校 #2 1006 Fantasia
    codeforces 698B Fix a Tree
    codeforces 699B Bomb
    HDU 4578(线段树
    CF 600F( 二分图
    hdu 5517 Triple(二维树状数组)
    HDU HDOJ5412(树套树or整体二分
  • 原文地址:https://www.cnblogs.com/blogxjc/p/12408608.html
Copyright © 2011-2022 走看看