题目链接:
#include <bits/stdc++.h>
using namespace std;
bool cmp(string a, string b) {
return a + b > b + a;
}
int main()
{
int n;
string s[25];
cin >> n;
for (int i = 0; i < n; i++){
cin >> s[i];
}
sort(s, s + n, cmp);
for (int i = 0; i < n; i++) {
cout << s[i];
}
return 0;
}
本题需要注意的一点是, 需自定义sort函数的比较函数。对于字符串a, b,如果把b加到a后面所产生的字符串的字典序较把a加到b后面所产生的字符串的字典序即可。
易错点:
若是直接用greater< string>()排序的话会导致部分样例不过,原因是可能会出现字符串长度不等的情况:231和23,按照排序的话231在23前面,但事实上23在231前面才正确。