剑指offer把数组排成最小的数
题目
输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。
思路
我们可以先将整个数组按照字符串顺序排好顺序,例如3和30,因为303一定小于330,所以30在3的前面,如此按照顺序排好,最后在拼接成字符串即可
代码
注意lambda表达式的使用
public String minNumber(int[] nums) {
String[] arr = new String[nums.length];
for(int i = 0;i<nums.length;i++)
arr[i] = String.valueOf(nums[i]);
Arrays.sort(arr, (a,b)->
{return (a+b).compareTo(b+a);}
);
StringBuffer s = new StringBuffer();
for(String ss : arr){
s.append(ss);
}
return s.toString();
}

浙公网安备 33010602011771号