1 题目描述
2 算法思路
思路:这题本质上,竟然是一个排序题,只是在排序时,需要重新制定排序规则
例如 "3" 和 "30" 303 < 330
排序规则可得:
- 如果x + y > y + x, 那么 x 的权值就大于y
- 反之亦然
算法流程:
- 初始化一个字符串 strs
- 对列表进行排序,根据上述规则进行排序
- 排序选择使用的是Arrays自带的sort方法,重写里面的比较器
- 返回strs
3 代码
class Solution {
public String minNumber(int[] nums) {
String[] strs = new String[nums.length];
for(int i = 0; i < nums.length; i++){ //将数字都转化为字符串
strs[i] = String.valueOf(nums[i]);
}
Arrays.sort(strs,
(x,y) -> (x + y).compareTo(y + x)
);
StringBuilder res = new StringBuilder();
for(String s : strs){
res.append(s);
}
return res.toString();
}
}
4 提交结果