ref: http://blog.csdn.net/whuwangyi/article/details/42705317
但是不理解最后如果出现 0000 状况为啥要用那么复杂的判断,所以简化了code
public class Solution {
public class StringComparator implements Comparator<String>{
//@override
public int compare(String s1, String s2){
String s12 = s1 + s2;
String s21 = s2 + s1;
return (int) (Long.parseLong(s12) - Long.parseLong(s21));
}
}
public String largestNumber(int[] num) {
// ref http://blog.csdn.net/whuwangyi/article/details/42705317,修正
if(num==null||num.length==0) return null;
List<String> str = new ArrayList<String>();
StringBuilder sb = new StringBuilder();
for(int i:num) str.add(""+ i);
Collections.sort(str, new StringComparator());
if(str.get(num.length-1).equals("0") ) return "0";
for(int i=num.length-1; i>=0; i--){
sb.append(str.get(i));
}
return sb.toString();
}
}