一、题目

输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。

二、解法

解题思路:
 * 先将整型数组转换成String数组,然后将String数组排序,最后将排好序的字符串数组拼接出来。关键就是制定排序规则。
 * 排序规则如下:
 * 若ab > ba 则 a > b,
 * 若ab < ba 则 a < b,
 * 若ab = ba 则 a = b;
 * 解释说明:
 * 比如 "3" < "31"但是 "331" > "313",所以要将二者拼接起来进行比较

 1 import java.util.ArrayList;
 2 import java.util.Collections;
 3 import java.util.Comparator;
 4 public class Solution {
 5      public String PrintMinNumber(int [] numbers) {
 6          int n = numbers.length;
 7          StringBuilder s = new StringBuilder();//新建SB对象
 8          ArrayList<Integer> list = new ArrayList<Integer>();//存储数组用ArrayList
 9          for(int i = 0 ; i < n; i++)
10              list.add(numbers[i]);//添加到list
11          Collections.sort(list,new Comparator<Integer>(){//list排序,实现Comparator接口
12             @Override
13             public int compare(Integer str1, Integer str2) {
14                 String s1 = str1+""+str2;
15                 String s2 = str2 + "" + str1;
16                 return s1.compareTo(s2);
17             }
18          });
19          for(int j : list)
20              s.append(j);
21         return s.toString();
22      }
23 }

转载于:https://www.cnblogs.com/fankongkong/p/7455437.html

32、把数组排成最小的数相关推荐

  1. 【剑指offer-Java版】33把数组排成最小的数

    把数组排成最小的数 难点在于比较规则的确定以及比较规则的正确性证明 比如:仅仅是局部的两个数字的顺序较小,如何保证整个数组按此规则进行排序后达到全局的较小 书中关于这一点的证明直接用的反证法,忘的差不 ...

  2. 33:把数组排成最小的数

    /*** 面试题33:把数组排成最小的数* 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个.* 例如输入数组{3,32,321},则打印出这三个数字能排成的 ...

  3. 《剑指offer》-- 把数组排成最小的数、丑数、二进制中1的个数、表示数值的字符串、替换空格

    一.把数组排成最小的数: 1.题目: 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个.例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为 ...

  4. 算法:把数组排成最小的数

    * @Description 把数组排成最小的数* @问题:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个.* 例如输入数组{3,32,321},则打印出这 ...

  5. printf打印数组_(45)C++面试之把数组排成最小的数

    // 面试题45:把数组排成最小的数 // 题目:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼 // 接出的所有数字中最小的一个.例如输入数组{3, 32, 321},则打印出这3 ...

  6. 列表转化成数组_30. 把数组排成最小的数

    把数组排成最小的数 题目描述 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个.例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为3213 ...

  7. 数据结构与算法--将数组排成最小的数

    将数组排成最小的数 题目:输入一个正整数的数组,将数组中所有数字拼接在一起排列成一个新的数,打印能拼接出来的所有数字中最小的一个, 案例:输入数组{12,4,55},则能打印出最小的数组是:12455 ...

  8. 【LeetCode】剑指 Offer 45. 把数组排成最小的数

    [LeetCode]剑指 Offer 45. 把数组排成最小的数 文章目录 [LeetCode]剑指 Offer 45. 把数组排成最小的数 package offer;import java.uti ...

  9. 面试题45. 把数组排成最小的数

    题目: 面试题45. 把数组排成最小的数 题解: 1. 题解一: 2. 题解二: * 解题思路:* 先将整型数组转换成String数组,然后将String数组排序,最后将排好序的字符串数组拼接出来.关 ...

  10. 剑指 Offer 笔记: T45. 把数组排成最小的数

    T45. 把数组排成最小的数 输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个. 示例 1: 输入: [10,2] 输出: "102" ...

最新文章

  1. 有“肌肉”有“血管”!波兰团队耗时5年研发超逼真仿生机械臂,网友:很怪异也很牛掰...
  2. linux分配iomem,Linux中__iomem
  3. php基础之时间格式化
  4. MySQL备份与恢复详解(热备、冷备等相关术语解释)
  5. 推荐一下:微软的Ramp Up学习计划
  6. b级计算机机房标准,B级电子信息系统机房技术要求国标GB50174–2008
  7. x内存满白苹果解决_苹果x出现白苹果的现象及解决办法
  8. 文件夹自定义重命名的步骤
  9. linux下RabbitMQ的配置和安装
  10. AVD安卓模拟器黑屏
  11. 抖音小店无货源,怎么操作可以出单?资深电商人在线分享
  12. layui数据表格与后台交互进行渲染
  13. 六、cocos2dx-效果(Effect)
  14. 总账凭证之间核销的SQL
  15. 使用C51单片机实现《两只老虎》
  16. 今年建筑工程设计乙级资质办理申报流程
  17. 云信小课堂|如何实现音视频安全检测?
  18. showModalDialog取得父窗口的语法
  19. 架构师须知97件事精华版
  20. CRM助力医药行业通路建设

热门文章

  1. Hadoop1.2.1源码解析系列:JT与TT之间的心跳通信机制——命令篇
  2. 2022内推 | 字节跳动校招 + 社招,包括NLP、CV和ASR和研究员等
  3. 简单实例讲解为何深度学习有效
  4. 百面机器学习—2. 特征工程与模型评估要点总结
  5. 遗传算法初学-旅行商问题
  6. 深度学习2.0-12.神经网络与全连接层之数据集的加载
  7. 1.2 Linux的网络配置和连接工具
  8. 铁子们,2019博客之星投票活动开始了!帮我投个票呗
  9. PyTorch:模型训练和预测
  10. Matplotlib Toolkits:三维绘图工具包matplotlib.mplot3d