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 String largestNumber(int[] nums) { Queue<String> queue = new PriorityQueue<>(new Comparator<String>(){ public int compare(String num1, String num2) { return (num2+num1).compareTo(num1+num2); } }); for(int num:nums) queue.offer(num+""); StringBuilder sb = new StringBuilder(); while(queue.size() > 0) { sb.append(queue.poll()); } int n = sb.length(), i=0; while(i < n) { if(sb.charAt(i) != '0') break; i++; } if(i == n) return "0"; return sb.substring(i); }