剑指 Offer 45. 把数组排成最小的数
题目:
输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。
示例1:
输入: [10,2]
输出: “102”
示例2:
输入: [3,30,34,5,9]
输出: “3033459”
解题思路:
此题求拼接起来的最小数字,本质上是一个排序问题。需要先将nums中的各个数字转化为字符串保存起来,然后进行排序。
代码如下:
/**
* 执行结果:通过
* 执行用时:6 ms, 在所有 Java 提交中击败了37.10%的用户
* 内存消耗:38.2 MB, 在所有 Java 提交中击败了21.54%的用户
* 通过测试用例:222 / 222
*/
class Solution {
public String minNumber(int[] nums) {
String[] s=new String[nums.length];
for(int i=0;i<nums.length;i++){
s[i]=String.valueOf(nums[i]);
}
Arrays.sort(s,(x,y)->(x+y).compareTo(y+x));
StringBuilder sb=new StringBuilder();
for(String i : s){
sb.append(i);
}
return sb.toString();
}
}