Sword45——把数组排成最小的数
方法1——自定义排序
- 思路:自定义比较器接口,完成数字的排序,之后进行排序即可。
- 自定义的排序规则为:两个数字,x拼接上y的数字、y拼接上x的数字
- 选取结果尽量小的数字放在前面
- 前者比后者小,则为x小于y
- 后者比前者小,则为x大于y
- 特殊情况与临界分析:无
- 终止条件:无
- 步骤:
- 将int数组转换为String数组,便于使用append拼接
- for循环完成数组赋值
- 调用Arrays工具类中的sort方法,对字符串数组排序,其中传入自定义比较器
- 定义StringBuilder用于拼接结果
- foreach循环用于拼接字符串
- 将StringBuilder转换为字符串输出
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();
}
![方法1——自定义排序](https://i-blog.csdnimg.cn/blog_migrate/e1b915eda9458729e59048b04709ddc5.png)