提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
题目描述
输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。
示例 1:
输入: [10,2]
输出: “102”
示例 2:
输入: [3,30,34,5,9]
输出: “3033459”
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/ba-shu-zu-pai-cheng-zui-xiao-de-shu-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题过程
解题思路
本题的主要思想是字符串的排序,而排序方式要定义为:
(x + y)< y + x==>x放到y前面。
排完序后就可以返回字符串了。
class Solution {
public String minNumber(int[] nums) {
//1.将整型数组转变为字符串数组
String [] str = new String[nums.length];
for(int i = 0; i < nums.length; i++){
str[i] = String.valueOf(nums[i]);
}
//2.利用排序方法,将字符串数组排序
Arrays.sort(str, (x, y) -> (x + y).compareTo(y + x));
//3.将排好序的数组拼接为字符串返回
StringBuilder res = new StringBuilder();
for(int i = 0; i < nums.length; i++){
res.append(str[i]);
}
return res.toString();
}
}
总结
暂时没有总结,待续。。。