179. Largest Number
重点在于新建一个Comparator, 用于数组的排序。举例来说,比如原数组为[9,5]
,有两种排序的可能性,分别为95
和59
,因为str2
小于str1
,所以返回-1
,相当于原数组中的两个数字不需要调换顺序。
public String largestNumber(int[] nums) {
if (nums == null || nums.length == 0) return "";
String[] strs = new String[nums.length];
for (int i = 0; i < nums.length; i++) {
strs[i] = String.valueOf(nums[i]);
}
Comparator<String> c = new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
String str1 = s1 + s2;
String str2 = s2 + s1;
return str2.compareTo(str1);
}
};
Arrays.sort(strs, c);
if (strs[0].equals("0")) return "0";
StringBuffer sb = new StringBuffer();
for (String s: strs) {
sb.append(s);
}
return sb.toString();
}