这题有个坑的地方是,每组数据第一行的数字后面有个小空格,不能直接定义n,然后cin>>n,这样后面执行getline(cin,s);就会把一个小空格输入到s中。
所以输入n的时候也要getline(cin,input),然后定义stringstream ss(input)对象,ss>>n; 这样空格就没有了,不影响后面输入
#include <iostream>
#include <vector>
#include <string>
#include <sstream>
#include <algorithm>
using namespace std;
bool myCompare(const string &a,const string &b){
return a.size()<b.size();
}
int main() {
string input;
string s;
int n;
vector<string> strs;
while (getline(cin,input)) { // 注意 while 处理多个 case
stringstream ss(input);
ss>>n;
strs.clear();
for(int i=0;i<n;i++){
getline(cin,s);
if(s=="stop") break;
else strs.push_back(s);
// cout<<s<<" ";
// cout<<strs.size()<<" ";
// cout<<strs[i]<<" "<<endl;
}
sort(strs.begin(),strs.end(),myCompare);
// cout<<strs.size()<<endl;
for(int i=0;i<strs.size();i++){
cout<<strs[i]<<endl;
}
}
}
// 64 位输出请用 printf("%lld")



京公网安备 11010502036488号