把数组排成最小的数
题目:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
思路:排序,规则是两个数组合起来小的在前面。
实现代码:
import java.util.*; public class Solution { public String PrintMinNumber(int [] numbers) { if(numbers == null || numbers.length <= 0) return new String(); Integer[] nums = new Integer[numbers.length]; for(int i=0; i<numbers.length; i++) { nums[i] = new Integer(numbers[i]); } Arrays.sort(nums, new Comparator<Integer>() { @Override public int compare(Integer o1, Integer o2) { int val1 = Integer.parseInt(String.valueOf(o1) + String.valueOf(o2)); int val2 = Integer.parseInt(String.valueOf(o2) + String.valueOf(o1)); return val1 > val2 ? 1 : -1; } }); StringBuilder ret = new StringBuilder(); for(int i=0; i<nums.length; i++) { ret.append(nums[i]); } return ret.toString(); } }
作者:Pickle
声明:对于转载分享我是没有意见的,出于对博客园社区和作者的尊重一定要保留原文地址哈。
致读者:坚持写博客不容易,写高质量博客更难,我也在不断的学习和进步,希望和所有同路人一道用技术来改变生活。觉得有点用就点个赞哈。
![](https://images2015.cnblogs.com/blog/735119/201701/735119-20170111112835275-168981902.gif)
![](https://images2015.cnblogs.com/blog/735119/201701/735119-20170111112841431-2047172832.jpg)
![](https://images2015.cnblogs.com/blog/735119/201701/735119-20170111112847494-1544911856.jpg)
![](https://images2015.cnblogs.com/blog/735119/201701/735119-20170111112904385-918783221.jpg)
![](https://images2015.cnblogs.com/blog/735119/201701/735119-20170111120143119-1302805212.jpg)
![](https://images2015.cnblogs.com/blog/735119/201701/735119-20170111112856369-1466718103.jpg)
![](https://images2015.cnblogs.com/blog/735119/201701/735119-20170111112830416-794416355.jpg)
![](https://images2015.cnblogs.com/blog/735119/201701/735119-20170111113919510-1155220901.gif)