zoukankan      html  css  js  c++  java
  • 剑指offer系列58---把数组排成最小的数

    【题目】输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。
    * 例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
    【思路】1 首先将整数数组转化成字符串数组str;
        2 写一个定制排序comparator,对str进行排序。排序后得到的结果321,32,3(<)
          排序规则:ab<ba a<b;
                ab>ba a>b;
                ab=ba a=b
        3 得到排序后结果。

    ****定制排序: int compare(T o1, T o2) :比较用来排序的两个参数。根据第一个参数小于、等于或大于第二个参数分别返回负整数、零或正整数。

     1 package com.exe11.offer;
     2 
     3 import java.util.Arrays;
     4 import java.util.Comparator;
     5 
     6 /**
     7  * 【题目】输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。
     8  *            例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
     9  * 【思路】1 首先将整数数组转化成字符串数组str;
    10  *           2 写一个定制排序comparator,对str进行排序。排序后得到的结果321,32,3(<)
    11  *             排序规则:ab<ba  a<b;
    12  *                   ab>ba  a>b;
    13  *                   ab=ba  a=b
    14  *        3 得到排序后结果。
    15  *             
    16  * @author WGS
    17  *
    18  */
    19 public class PrintMinNumberofArray {
    20     public String PrintMinNumber(int [] numbers) {
    21         if(numbers==null ||numbers.length<=0)
    22             return null;
    23         
    24         StringBuilder sb=new StringBuilder();
    25         String[] str=new String[numbers.length];
    26         //1 转换
    27         for(int i=0;i<numbers.length;i++){
    28             str[i]=numbers[i]+"";
    29         }
    30         //2 写一个定制排序
    31         Comparator com=new Comparator<String>(){
    32             @Override
    33             public int compare(String o1, String o2) {
    34                 return (o1+o2).compareTo(o2+o1);
    35             }            
    36         };
    37         //3 对str进行排序
    38         Arrays.sort(str, com);
    39         //4 得到排序后的数字
    40         for(int i=0;i<str.length;i++){
    41             sb.append(str[i]);
    42         }    
    43         return sb.toString();    
    44     }
    45     
    46     public static void main(String[] args) {
    47         PrintMinNumberofArray p=new PrintMinNumberofArray();
    48         //int[] nums=new int[]{3,32,321};
    49         int[] nums=new int[]{1,12,23,311};
    50         String s=p.PrintMinNumber(nums);
    51         System.out.println(s);
    52     }
    53 }
  • 相关阅读:
    python编写规范
    我们分析了400位华语歌手的歌词,发现人们重点关注的人事物情
    外部厂商公开工具
    OSI七层与TCP/IP五层网络架构详解
    npm run dev--The 'mode' option has not been set, webpack will fallback to 'production' for this value
    webpack-dev-server --inline --progress --config build/webpack.dev.conf.js
    PPTV(pplive)_forap_1084_9993.exe 木马清除经历
    【转】【Nginx】Nginx 入门教程 + 常用配置解析
    【转】【Python】Python 中文编码报错
    【Centos】systemd入门教程
  • 原文地址:https://www.cnblogs.com/noaman/p/5640102.html
Copyright © 2011-2022 走看看