0%

leetCode-179:Largest Number

问题描述

给定一个整形数组,要求将数组中的元素进行拼接,返回拼接后的数字最大的值。题目链接:**点我**

样例输入输出

输入:nums = [10,2]

输出:210

输入:nums = [3,30,34,5,9]

输出:9534330

问题解法

将数组中整数转成字符串,然后用字符串进行比较,如果 a + bb + a, 则 a 放前面,b 放后面。排序后,将字符串进行连接就是最终的结果。需要注意的是前置 0 的情况,需要将前置 0 进行排除。代码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Solution
{
public String largestNumber(int[] nums)
{
String result = Arrays.stream(nums).mapToObj(String::valueOf).sorted((a, b) -> (b + a).compareTo(a + b)).collect(Collectors.joining());
int index = 0;
for (int i = 0; i < result.length() - 1; i++)
{
if (result.charAt(i) == '0' && result.charAt(i + 1) == '0')
{
index = i + 1;
}

if (result.charAt(i) != '0')
{
break;
}
}
return result.substring(index);
}
}