45. 把数组排成最小的数
发布日期:2021-06-29 01:04:11
浏览次数:3
分类:技术文章
本文共 1178 字,大约阅读时间需要 3 分钟。
文章目录
剑指 Offer 45. 把数组排成最小的数
输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。
示例 1:
输入: [10,2]
输出: “102”
示例 2:
输入: [3,30,34,5,9]
输出: “3033459”
提示:
0 < nums.length <= 100
说明:
输出结果可能非常大,所以你需要返回一个字符串而不是整数
拼接起来的数字可能会有前导0
,最后结果不需要去掉前导 0
解题思路
假如有两个字符串ab cd
,如果abcd < cdab
,则拼成数字后,abcd
也会小于cdab
如30
和34
,字符串"3034" < "3430"
,则数字也有3034<3430
。所以本题就是自定义一个排序规则就行了。
Java代码
class Solution { public String minNumber(int[] nums) { if(nums == null || nums.length == 0) return ""; //Arrays.sort()不支持传比较器,故先将元素都放到list中 Listlist = new ArrayList<>(); for(int num : nums){ list.add(num); } //传自定义的比较器进行排序 list.sort(new Comparator (){ @Override public int compare(Integer i1,Integer i2){ String str1 = String.valueOf(i1); String str2 = String.valueOf(i2); return (str1 + str2).compareTo(str2 + str1); } }); //涉及字符串的拼接问题,故可以先用StringBuilder存着 StringBuilder sb = new StringBuilder(); for(int i = 0;i < list.size();i++){ sb.append(list.get(i)); } return sb.toString(); }}
转载地址:https://blog.csdn.net/YouMing_Li/article/details/114594886 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
表示我来过!
[***.240.166.169]2024年04月27日 01时58分28秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
【学习笔记】Linux下CPU性能评估
2019-04-29
【学习笔记】Linux下内存性能评估
2019-04-29
【学习笔记】Linux下磁盘IO性能评估
2019-04-29
【学习笔记】Mysql中通过profiling定位query性能瓶颈
2019-04-29
2011年网上购书清单
2019-04-29
质量管理专家——戴明的14点说
2019-04-29
软件测试需要思考的问题?
2019-04-29
软件问题的分类与管理
2019-04-29
易用性测试关注点
2019-04-29
人生少走弯路的10条忠告
2019-04-29
测试管理工具TestDirector安装部署及常见问题解决方法
2019-04-29
启动Solr提示Java版本低,无法启动的解决办法
2019-04-29
Kafka 集群环境搭建
2019-04-29
Zookeeper集群环境搭建
2019-04-29
Redis监控程序--RedisMonitor
2019-04-29
Redis-cluster 命令查看服务情况
2019-04-29
一条数据的HBase之旅
2019-04-29
Hbase2.1.5集群环境搭建
2019-04-29
Hbase一些问题点
2019-04-29
动态代理GOF模式
2019-04-29