题目描述
给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分),使之组成一个最大的整数。
由于结果可能非常大,你只需要输出这个最大整数的字符串形式。
输入描述
第一行输入一个整数 n,表示数组长度。
第二行输入 n 个非负整数。
输出描述
输出重新排列后能组成的最大整数。
示例 1
输入
text
3
10 2 30
输出
text
30210
说明
排列为 30 2 10,组成 30210,是最大整数。
示例 2
输入
text
4
3 30 34 5 9
输出
text
9534330
C++ 解法
cpp
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
vector<string> nums(n);
for (int i = 0; i < n; i++) cin >> nums[i];
sort(nums.begin(), nums.end(), [](const string& a, const string& b) {
return a + b > b + a;
});
if (nums[0] == "0") {
cout << "0" << endl;
return 0;
}
string ans;
for (auto& s : nums) ans += s;
cout << ans << endl;
return 0;
}