179. 最大数
题目描述
给定一组非负整数 nums
,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。
注意:输出结果可能非常大,所以你需要返回一个字符串而不是整数。
输入输出
1 2 3 4 5
| 输入:nums = [10,2] 输出:"210"
输入:nums = [3,30,34,5,9] 输出:"9534330"
|
基本思路
比较类似的题目:剑指 Offer 45. 把数组排成最小的数
- 以下”+”是前后拼接起来的意思
x+y > y+x
x”大于”y x在y后边
x+y < y+x
x”小于”y x在y前边
- Java中 x.compareTo(3)
java实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| class Solution { public String largestNumber(int[] nums) { String[] str = new String[nums.length]; for(int i = 0; i < str.length; i++){ str[i] = String.valueOf(nums[i]); } Arrays.sort(str,(x, y) -> (y+x).compareTo(x+y)); StringBuilder sb = new StringBuilder(); for(String s:str){ sb.append(s); } String res = sb.toString(); if(res.charAt(0) == '0'){ return "0"; } return res; } }
|