剑指 Offer 45. 把数组排成最小的数
思路
看一下下面这个例子,
存在元素3、30,把他们连接起来,那么就有3+30=330,30+3=303,也就是30+3<3+30,那么我们只要按照这个规律连接所有元素就好。因此需要把所有元素转化成字符串,通过比较x+y和y+x的大小,如果x+y<y+x,那么x放前面,y放后面
代码
public String minNumber(int[] nums) {
String []strs=new String[nums.length];
for(int i=0;i<nums.length;i++){
strs[i]=String.valueOf(nums[i]);
}
Arrays.sort(strs,(x,y)->((x+y).compareTo(y+x)));
StringBuilder res=new StringBuilder("");
for(String str:strs){
res.append(str);
}
return res.toString();
}