版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
题目大意:输入几个数字串的排列,输出它们排列所得最小的数。
使用cmp将数字进行排列;同时检测开头位是否为零,使用erase将0进行消除。
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
bool cmp(string a, string b) {
return a + b < b + a;
}
string sb[10010];
int main() {
int n;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> sb[i];
}
sort(sb, sb + n, cmp);
string s;
for (int i = 0; i < n; i++) {
s += sb[i];
}
while (s.length() != 0 && s[0] == '0') {
s.erase(s.begin());
}
if (s.length() == 0)cout << 0;
else {
cout << s;
}
}