把数组排成最小的数
把数组排成最小的数
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
在这里自定义一个比较大小的函数,比较两个字符串s1, s2大小的时候,先将它们拼接起来,比较s1+s2,和s2+s1那个大,如果s1+s2大,那说明s2应该放前面,所以按这个规则,s2就应该排在s1前面。将字符串按此规则升序排好后拼接输出
import java.util.*;
public class Solution {
public String PrintMinNumber(int [] numbers) {
int size=numbers.length;
if(size<1){
return "";
}
ArrayList<String>strNum=new ArrayList<String>();
for(int i=0;i<size;i++){
strNum.add(String.valueOf(numbers[i]));
}
String ans="";
Collections.sort(strNum,new Comparator<String>(){
@Override
public int compare(String t1,String t2){
if(Long.valueOf(t1+t2)>Long.valueOf(t2+t1)){
return 1;
}else{
return -1;
}
}
});
for(int i=0;i<size;i++){
ans=ans+strNum.get(i);
}
return ans;
}
}
- 将其他的基本类型的值转换为String:String.valueOf()
- 字符串数组也是能用的,没必要每次都构造容器

浙公网安备 33010602011771号