输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。
示例 1:
输入: [10,2]
输出: “102”
示例 2:
输入: [3,30,34,5,9]
输出: “3033459”
提示:
0 < nums.length <= 100
思路:把int变成字符串,然后一个个比较排序,如果a+b>b+a 那么就把a和b交换。
这样出来的结果就是最小的了。
class Solution {
public String minNumber(int[] nums) {
String anw[] = new String[nums.length];
for(int i = 0; i < nums.length; i++){
//也可以写成 anw[i] = String.valueOf(nums[i]);
Integer temp = (Integer)nums[i];
anw[i] = temp.toString();
}
// Arrays.sort(anw, new Comparator(){
// public int compare(String a,String b){
// String tmp1=a.concat(b);
// String tmp2=b.concat(a);
// return tmp1.compareTo(tmp2);
// }
// });
//Lambda
Arrays.sort(anw,(String a, String b) -> (a+b).compareTo(b+a));
StringBuffer sb = new StringBuffer();
for(String s : anw){
sb.append(s);
}
return sb.toString();
}
}



