题解 | #单词倒排#
单词倒排
https://www.nowcoder.com/practice/81544a4989df4109b33c2d65037c5836
#include<iostream>
#include<string>
#include<vector>
using namespace std;
int main() {
string s;
getline(cin, s);
vector<string> v;//用于存储所有“单词”
for (auto it = s.begin(); it != s.end(); ++it) { //从头遍历s找到字母
if (isalpha(*it)) {
auto jt = it;
for (jt = it + 1; jt != s.end(); ++jt) { //从it下一个开始遍历找到非字母字符
if (!isalpha(*jt)) {
string t(it, jt);//左闭右开区间,放进t中
v.push_back(t);//将t放进v中
it = jt;//it置为jt,结合++it就是从jt的下一个位置继续遍历
break;
}
}
if (jt == s.end()) { //如果遍历到s最后还是字母
string t(it, jt);
v.push_back(t);
break;
}
}
}
for (int vt = v.size() - 1; vt >= 0; --vt) { //倒序输出
cout << v[vt] << " ";
}
cout << endl;
return 0;
}
思路:从字符串s中提取被非字母字符分隔的“单词”,依次存储到存储字符串的顺序容器v中,然后倒序输出即可。

查看19道真题和解析