leetcode#179 最大数
题目:
给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。
注意:输出结果可能非常大,所以你需要返回一个字符串而不是整数。
示例:
输入:nums = [10,2]
输出:"210"
思路:
生成一种新的排序方式,对于两个数,我们不知道他们怎么排最大,那么我们直接比较结果就好了,使得a+b>b+a就可以了。
代码:
class Solution
{
public:
string largestNumber(vector<int> &nums)
{
int n = nums.size();
vector<string> s(n);
for (int i = 0; i < n; ++i)
s[i] = to_string(nums[i]);
auto cmp = [](string a, string b)
{return a + b > b + a;};
sort(s.begin(), s.end(), cmp);
string ans="";
for (int i = 0; i < n; ++i)
ans += s[i];
if(ans[0]=='0') return "0";
return ans;
}
};