leetcode-largest-number

题目大意

  https://leetcode.com/problems/largest-number/

  非负数组,把数组中所有数看成字符串组合拼接在一起最大,求最大的数的字符串形式

题目分析

  本质上是字符串之间的一种“排序”,注意数组全是0的特殊情况。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
public class Solution {
public String largestNumber(int[] nums) {
if (nums.length == 0) {
return "";
}
List<String> list = new ArrayList<String>();
boolean not0 = false; //用这个变量判断一下是否数组中全部是0
for (int i : nums) {
if (i != 0) {
not0 = true;
}
list.add(String.valueOf(i));
}
if (!not0) {
return "0";
}
Collections.sort(list, new Comparator<String>() {
public int compare(String s1, String s2)
{
String ss1 = s1 + s2;
String ss2 = s2 + s1;
return ss2.compareTo(ss1);
}
});
StringBuilder ans = new StringBuilder();
for (String i : list) {
ans.append(i);
}
return ans.toString();
}
}