题目的链接在这里:https://www.nowcoder.com/practice/8fecd3f8ba334add803bf2a06af1b993
题目大意
输入一个正整数数组numbers,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。 例如输入数组[3,32,321],则打印出这三个数字能排成的最小数字为321323。数据范围:
0<=len(numbers)<=100
一、示意图
二、解题思路
String的知识和compare的知识
String的知识和compare的知识
代码如下:
import java.util.*;
public class Solution {
public String PrintMinNumber(int [] numbers) {
//把数组中的所有数字都拼接成一排
String s="";
if(numbers.length==0){
return s;
}
String[] strs=new String[numbers.length];
for(int i=0;i<numbers.length;i++){
//和String.valueOf的区别
strs[i]=Integer.toString(numbers[i]);
}
//然后使用新的排序方法
Arrays.sort(strs, new Comparator<String>() {
@Override
public int compare(String a, String b) {
return (a+b).compareTo(b+a);
}
});
//然后排好序
StringBuilder sb=new StringBuilder();
for(String s1:strs){
sb.append(s1);
}
//然后返回
return sb.toString();
}
}