这道题目的主要问题就在与如何比较两个数拼接的顺序,我采取的方式是使用分别将两种拼接方式做一个比较,这样就可以得到两个数的拼接顺序.对所有数按照上述做法做一个排序,就可以得到所有数的顺序.接下来就是如何处理数前面的0的问题.这道题还有一个坑就是如果全为0,就要输出'0'.
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
vector<string> num;
bool cmp(string str1,string str2){
string first = str1 + str2;
string second = str2 + str1;
if(first < second){
return true;
}else{
return false;
}
}
int main(){
int N;
cin >> N;
for(int i = 0; i < N;i++){
string str;
cin >> str;
num.push_back(str);
}
sort(num.begin(),num.end(),cmp);
string result;
for(int i = 0;i < num.size();i++){
result += num[i];
}
//cout << result << endl;
bool flag = false;
int index = 0;
int len = result.length();
for(int i = 0; i < len;i++){
if(result[i] != '0'){
flag = true;
index = i;
break;
}
}
if(flag == false){
cout << '0' << endl;
}else{
for(int i = index;i < len;i++){
cout << result[i];
}
}
return 0;
}