LeetCode 179. 最大数(Largest Number)

题目描述

给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数。

示例 1:

输入: [10,2]
输出: 210

示例 2:

输入: [3,30,34,5,9]
输出: 9534330

说明: 输出结果可能非常大,所以你需要返回一个字符串而不是整数。

解题思路

组成最大数应使得高位数字尽量大,所以首先按照高位数字从大到小对数组排序,然后一次从高位到低位组成最大数。注意若数组全为0,则直接返回一个0.

代码

 1 class Solution {
 2 public:
 3     string largestNumber(vector<int>& nums) {
 4         vector<string> numStr;
 5         for(int num: nums)
 6             numStr.push_back(to_string(num));
 7         sort(numStr.begin(), numStr.end(), cmp);
 8         if(numStr.size() && numStr[0] == "0") return "0";
 9         string s = "";
10         for(string num: numStr)
11             s += num;
12         return s;
13     }
14     static bool cmp(string i, string j){
15         return i + j > j + i;
16     }
17 };
原文地址:https://www.cnblogs.com/wmx24/p/9523792.html