45. 把数组排成最小的数
发布日期:2021-06-29 01:04:11
浏览次数:2
分类:技术文章
本文共 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月26日 23时31分18秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Hadoop、MapReduce、YARN和Spark的区别与联系
2019-04-29
我终于搞清楚了和String有关的那点事儿。
2019-04-29
Kafka入门---概念
2019-04-29
springcloud 第一篇: 服务的注册与发现Eureka(Finchley版本)
2019-04-29
springcloud 第三篇: 服务消费者(Feign)(Finchley版本)
2019-04-29
Java关于JDBC的基本使用
2019-04-29
git配置与使用说明
2019-04-29
python
2019-04-29
网络协议
2019-04-29
进程和线程
2019-04-29
sql面试题
2019-04-29
linux基础与调优
2019-04-29
centos7安装
2019-04-29
hadoop相关介绍
2019-04-29
HTTP协议解析
2019-04-29
数据结构
2019-04-29
软件测试基础
2019-04-29
软件测试分类
2019-04-29
软件测试面试技术题
2019-04-29
性能测试流程详解
2019-04-29