public class Solution { // DO NOT MODIFY THE LIST. IT IS READ ONLY public String largestNumber(final List<Integer> A) { List<String> strs = new ArrayList<>(); for (int i = 0; i < A.size(); i ++) { int n = A.get(i); strs.add(String.valueOf(n)); } Collections.sort(strs, new Comparator<String>() { @Override public int compare(String one, String two) { return (two + one).compareTo(one + two); } }); StringBuilder sb = new StringBuilder(); boolean nonZero = false; for (int i = 0; i < strs.size(); i ++) { if (nonZero || !strs.get(i).equals("0") || i == strs.size() - 1) { sb.append(strs.get(i)); nonZero = true; } } return sb.toString(); } }