给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数。
示例 1:
输入:[10,2]
输出:210
示例 2:
输入:[3,30,34,5,9]
输出:9534330
说明: 输出结果可能非常大,所以你需要返回一个字符串而不是整数。
bool cmp(string a, string b){
return a+b<b+a;
}
class Solution {
public:
string largestNumber(vector<int>& nums) {
vector<string> str;
for (auto w : nums)
{
str.push_back(to_string(w));
}
sort(str.begin(), str.end(),cmp);
for (auto q = str.begin() ; q < str.end()-1; q++)
{
string str_temp[2];
str_temp[0] = *q + *(q + 1);
str_temp[1] = *(q + 1) + *q;
sort(str_temp, str_temp + 2,cmp);
*(q + 1) = str_temp[1];
}
string temp = *(str.end()-1);
if (temp[0]=='0')
{
return "0";
}
return *(str.end()-1);
}
};