题解 | #字符串排序#
字符串排序
https://www.nowcoder.com/practice/5af18ba2eb45443aa91a11e848aa6723
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
bool comp (const string a, const string b) {
int m = a.size();
int n = b.size();
int minlen = min(m,n);
for (int i = 0; i < minlen; i++) {
if (a[i] == b[i])
continue;
return a[i] < b[i];
}
if (m < n)
return true;
else
return false;
}
int main() {
int n;
while (cin >> n) { // 注意 while 处理多个 case
vector<string> vs(n);
for (int i = 0; i < n; i++)
cin >> vs[i];
sort(vs.begin(), vs.end(), comp);
for (auto tmp : vs)
cout << tmp << endl;
}
}
本来用的geline(cin, vs[i])来输入字符串,但最后一行的字符串实际上没有被vs存下来
换成cin>>vs[i]后正常了
百度了一下cin和getline的区别:
cin:会忽略空白字符,空白符号和'\n'会停止cin的输入
getline:不会忽略空白字符,直到遇到'\n'或EOF停止输入
getline之所以出错,因为输入的最后一行末尾不是'\n',也不是EOF
所以在考试遇到字符串输入,需要留意字符串中是否有空格,有空格则用getline,否则用cin就可以了
海康威视公司福利 1315人发布
