用vector< string >保存输入,之后将string前补0,使得长度相同;最后将vector按照字典排序,删除前导0再输出
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main(){
vector<string> vec_in;//保存输入
int n;
cin>>n;
while(n--){
string str;
cin>>str;
vec_in.push_back(str);
}
//求大整数最大长度
int size = -1;
for(auto x : vec_in){
int x_len = x.size();
if(x_len > size) size = x_len;
}
//将长度不满size的字符串前补0
vector<string> vec;//操作数组
for(auto x : vec_in){
int x_len = x.size();
if(x_len == size) vec.push_back(x);
else{//前补0
int zero_len = size - x_len;
string tmp = "";
for(int i = 0;i < zero_len;i++){
tmp += '0';
}
tmp += x;
vec.push_back(tmp);
}
}
sort(vec.begin(),vec.end());//按照字典排序
//去掉前导0并输出
for(auto x : vec){
int zeros = 0;//记录前导0的个数
for(int i = 0;i < x.size();i++){
if(x[i] == '0') zeros++;
else break;
}
string tmp = "";
for(int i = zeros;i < x.size();i++){
tmp += x[i];
}
cout<<tmp<<endl;
}
return 0;
}