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);
}
}