题意:给一串数字,要求将这些数字组成一个数值最大的数字
解法:懒一点的写法,直接将两者暴力组合之后判断大小,根据这个comparator写排序
<span style="font-size:18px;">import java.util.Arrays;
public class Solution {
public String largestNumber(int[] num) {
String ret = "";
NewString s[] = new NewString[num.length];
for (int i = 0; i < s.length; i++)
s[i] = new NewString(num[i]);
Arrays.sort(s);
for (int i = s.length - 1; i >= 0; i--)
ret += s[i];
if (ret.charAt(0) == '0')
return "0";
return ret;
}
}
class NewString implements Comparable<NewString> {
String str;
NewString(int a) {
str = "" + a;
}
public int compareTo(NewString o) {
String s1 = str + o.str;
String s2 = o.str + str;
for (int i = 0; i < s1.length(); i++)
if (s1.charAt(i) < s2.charAt(i))
return -1;
else if (s1.charAt(i) > s2.charAt(i))
return 1;
return 0;
}
public String toString() {
return str;
}
}</span>