[leetcode] [c++]求输入的所有数能组成的最大数
给定一组非负整数 nums,重新排列它们每个数字的顺序(每个数字不可拆分)使之组成一个最大的整数。
注意:输出结果可能非常大,所以你需要返回一个字符串而不是整数。
解题思路:将输入的数化为字符串;利用sort排序;自定义比较函数cmp,将使得组合字符串“较大”的字符串放在前面。
to_string函数将传入值化为string类型。
class Solution {
private:
static bool cmp (string a,string b)
{
string ab = a+b;
string ba = b+a;
return ab>ba;
}
public:
string largestNumber(vector<int>& nums)
{
string res ="";
vector <string> v;
for (int i=0;i<nums.size();++i)
v.push_back(to_string(nums[i]));
sort(v.begin(),v.end(),cmp);
if(v[0]=="0")
return "0";
for (int i=0;i<v.size();++i)
res += v[i];
return res;
}
};
希望对你有所帮助。