一、题目
Given a list of non-negative integers nums, arrange them such that they form the largest number and return it.
Since the result may be very large, so you need to return a string instead of an integer.
Example 1:
Input: nums = [10,2]
Output: “210”
Example 2:
Input: nums = [3,30,34,5,9]
Output: “9534330”
Constraints:
1 <= nums.length <= 100
0 <= nums[i] <= 109
二、题解
对于a,b。若a+b的字典序大于b+a的字典序,则a+b排在b+a前面
class Solution {
public:
static bool cmp(string left,string right){
return left + right > right + left;
}
string largestNumber(vector<int>& nums) {
int n = nums.size();
vector<string> str;
for(int i = 0;i < n;i++){
str.push_back(to_string(nums[i]));
}
sort(str.begin(),str.end(),cmp);
string res = "";
for(int i = 0;i < str.size();i++) res += str[i];
if(res[0] == '0') return "0";
return res;
}
};