代码:
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
bool cmp(string, string);
int main(){
int N;
cin>>N;
string s[N];
for(int i=0; i<N; i++) cin>>s[i];
sort(s, s+N, cmp);
string ans;
for(int i=0; i<N; i++) ans += s[i];
while(ans[0]=='0') ans.erase(ans.begin());
//size_t start = ans.find_first_not_of('0');
//ans.erase(ans.begin(), ans.begin()+start);
if(ans.length()==0) cout<<'0';
else cout<<ans;
return 0;
}
bool cmp(string a, string b){
return a+b<b+a;
}
消除string开头的0这一步骤中,注释掉的部分用find_first_not_of()函数会有一个测试点出错,原因是整个串都是0,会返回string::npos,在erase时就会出错