首页IT科技将数组排序的最少交换次数(每日算法之把数组排成最小的数)

将数组排序的最少交换次数(每日算法之把数组排成最小的数)

时间2025-06-15 14:02:10分类IT科技浏览5964
导读:JZ45 把数组排成最小的数 描述...

JZ45 把数组排成最小的数

描述

输入一个非负整数数组numbers               ,把数组里所有数字拼接起来排成一个数                        ,打印能拼接出的所有数字中最小的一个               。

例如输入数组[3        ,32               ,321]                       ,则打印出这三个数字能排成的最小数字为321323                        。

1.输出结果可能非常大        ,所以你需要返回一个字符串而不是整数

2.拼接起来的数字可能会有前导 0        ,最后结果不需要去掉前导 0

具体做法

step 1:优先判断空数组的特殊情况        。

step 2:将数组中的数字元素转换成字符串类型               。

step 3:重载排序比较为字符串类型的x + y < y + x                       ,然后进行排序                       。

step 4:将排序结果再按照字符串拼接成一个整体        。

代码

package mid.JZ45把数组排成最小的数; import java.util.Arrays; import java.util.Comparator; public class Solution { public String PrintMinNumber(int [] numbers) { if(numbers == null || numbers.length == 0) { return ""; } String[] strArr = new String[numbers.length]; for (int i = 0; i < numbers.length; i++) { strArr[i] = numbers[i] + ""; } Arrays.sort(strArr, new Comparator<String>() { @Override public int compare(String o1, String o2) { String s1 = o1 + o2; String s2 = o2 + o1; return s1.compareTo(s2); } }); StringBuilder res = new StringBuilder(); for (String s : strArr) { res.append(s); } return res.toString(); } }

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
正则表达式(python正则表达式中的零宽断言) 微信小程序日期选择器 回显有问题(【微信小程序】– 表单组件 – picker 实现日期选择器(五十三))