首页 > 编程语言 > 详细

剑指Offer(Java版)第三十七题:输入一个正整数数组,把数组里所有数字拼接起来排成一个数, 打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321}, 则打印出这三个数字能排成的最小数字为321323。

时间:2020-03-18 14:42:57      阅读:70      评论:0      收藏:0      [点我收藏+]

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

import java.util.*;

public class Class37 {

public String PrintMinNumber(int [] numbers){
if(numbers == null || numbers.length <= 0){
return "";
}
ArrayList<String> zuhe = new ArrayList<String>();
for(int number : numbers){
zuhe.add(String.valueOf(number));
}
Collections.sort(zuhe,new Comparator<String>(){
public int compare(String s1, String s2){
String a1 = s1 + s2;
String a2 = s2 + s1;
return a1.compareTo(a2);
}
});
StringBuilder s = new StringBuilder();
for(String str : zuhe){
s.append(str);
}
return s.toString();

}
public void test(){
int[] numbers = new int[]{3,32,321};
System.out.println(PrintMinNumber(numbers));
}

public static void main(String[] args) {
// TODO Auto-generated method stub
Class37 c = new Class37();
c.test();

}

}

剑指Offer(Java版)第三十七题:输入一个正整数数组,把数组里所有数字拼接起来排成一个数, 打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321}, 则打印出这三个数字能排成的最小数字为321323。

原文:https://www.cnblogs.com/zhuozige/p/12517217.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!