public class Solution { public String largestNumber(int[] nums) { int length = nums.length; Queue<String> queue = new PriorityQueue<String>(length, new Comparator<String>() { public int compare(String s1, String s2) { return Long.valueOf(s1 + s2) - Long.valueOf(s2 + s1) > 0 ? 1 : -1; } }); for (int num : nums) { queue.offer(String.valueOf(num)); } StringBuffer result = new StringBuffer(""); while (!queue.isEmpty()) { result.insert(0, queue.poll()); } if (result.charAt(0) == '0') { return "0"; } return String.valueOf(result); } }