把数组排成最小的数
把数组排成最小的数
https://www.nowcoder.com/practice/8fecd3f8ba334add803bf2a06af1b993?tpId=13&&tqId=11185&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking
这道题目可以看成是一道排序的题目,因为要使得结果最小,那么给出的整数要怎么排列呢?
其实就可以转化为 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(); }
剑指offer 文章被收录于专栏
为刷过的每一道题都书写一篇题解,便于重复练习~