给定一组非负正数nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的正数。
**注意:**输出的结果可能非常大,所以你需要返回一个字符串,而不是正数。
示例1:
输入:nums = [10, 2]
输出:“210”
示例2:
输入:nums=[3, 30, 34, 5, 9]
输出:“9534330”
class Solution {
public:
string largestNumber(vector<int>& nums) {
sort(nums.begin(), nums.end(), [](const int& x, const int& y){
int sx = 10;
int sy = 10;
while(sx<=x) { sx*=10; }
while(sy<=y) { sy*=10; }
return sy*x+y > sx*y+x;
});
if (nums[0] == 0) return "0";
string ret;
for (auto& x:nums) {
ret += to_string(x);
}
return ret;
}
};