数组组成最大数
给定一个数组如:num=[2, 4, 32, 542];
将数组排成一个可以组成的最大数字,以字符串形式输出
输出:5424322
解题代码
核心思想,如果a+b>b+a 那么排序a再b前面 比如 2 和13 213 > 132
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
string largestNumber(vector<int>& nums)
{
int len = nums.size();
if (len == 0)
return "";
if (len == 1)
return to_string(nums[0]);
sort(nums.begin(), nums.end(), [](int a, int b) -> bool
{
string p = to_string(a) + to_string(b);
string q = to_string(b) + to_string(a);
return p > q;
});
string res;
for (int val : nums)
{
res += to_string(val);
}
if (res[0] == '0')
return "0";
return res;
}
int main()
{
vector<int>arr = { 2, 4, 32, 542 };
cout << largestNumber(arr) << endl;
return 0;
}