标签:
题目:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{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(); } }
标签:
原文地址:http://www.cnblogs.com/wxisme/p/5468974.html