179. Largest Number
Given a list of non negative integers, arrange them such that they form the largest number.
For example, given [3, 30, 34, 5, 9], the largest formed number is 9534330.
Note: The result may be very large, so you need to return a string instead of an integer.
public class Solution { public String largestNumber(int[] nums) { ArrayList<String> strs = new ArrayList<String>(); for(int i : nums) { strs.add(new Integer(i).toString()); } Collections.sort(strs, new Comparator<String>() { @Override public int compare(String o1, String o2) { char[] chars1 = o1.toCharArray(); char[] chars2 = o2.toCharArray(); int l1 = chars1.length; int l2 = chars2.length; int l = l1+l2; for (int i = 0; i < l; ++i) { char char1; char char2; if (i < l1) char1 = chars1[i]; else char1 = chars2[i-l1]; //"o1"+"o2" if (i < l2) char2 = chars2[i]; else char2 = chars1[i-l2]; //"o2"+"o1" if(char1<char2) return -1; // "o1" is small else if(char1>char2) return 1; // "o1" is large } return 0; } }); if(strs.get(strs.size()-1).charAt(0)=='0') return "0"; StringBuilder sb = new StringBuilder(); for(int i = strs.size()-1; i>=0;--i) { sb.append(strs.get(i)); } return sb.toString(); } }

浙公网安备 33010602011771号