这道题目可以看成是一道排序的题目,因为要使得结果最小,那么给出的整数要怎么排列呢?
其实就可以转化为 A+B 与 B+A 之间比较的问题,当A+B小于B+A的时候,很明显A要放在B的前面,这样才能使得结果小。
所以我们可以利用sort函数进行排序。
public String PrintMinNumber(int [] numbers) {
// 3 32 321
if(numbers == null || numbers.length == 0)
return "";
int n = numbers.length;
String[] nums = new String[n];
for(int i = 0; i < n; i++){
nums[i] = numbers[i]+"";
}
Arrays.sort(nums,(s1,s2)->{
return (s1+s2).compareTo(s2+s1); /*升序*/
});
StringBuffer sb = new StringBuffer();
for(String num:nums)
sb.append(num);
return sb.toString();
}

京公网安备 11010502036488号