该题解决方法是排序,我们只需要对两个数的对比方法进行改写就好了。改写思路为两个字符串 a 和 b, 如果 a + b 小于 b + a, 那么就交换位置。
代码如下:
1 class Solution {
2 public String largestNumber(int[] nums) {
3 String[] str = new String[nums.length];
4 for(int i = 0 ; i < nums.length ; i++){
5 str[i] = String.valueOf(nums[i]);
6 }
7
8 Comparator<String> comp = new Comparator<String>(){
9 public int compare(String a, String b){
10 return (b+a).compareTo(a+b);
11 }
12 };
13
14 Arrays.sort(str, comp);
15
16 if(str[0].equals("0"))
17 return "0";
18
19 sb = new StringBuilder();
20
21 for(String s:str)
22 sb.append(s);StringBuilder
23
24 return sb.toString();
25 }
26
27 }
END