题解 | #单词倒排#C++利用getline和vector
单词倒排
https://www.nowcoder.com/practice/81544a4989df4109b33c2d65037c5836
#include <iostream>
#include <vector>
#include <sstream>
//总体思路是将非字母字符转换成空格,然后利用getline分割,并压入vector容器,最后倒序遍历
using namespace std;
void ReverseWords(string input) {
//遍历字符串,将非字母字符变成空格
for (int i = 0; i < input.size(); i++) {
if (!isalpha(input[i])) {
input[i] = ' ';
}
}
vector<string> tokens;//声明一个vector容器,以便将存储的字符串压入容器
string token;//声明一个字符串,以便存储读取的字符串
istringstream tokenStream(input);//将字符串转换成输入流
char delimiter = ' '; //声明分割符
//利用getline读取一行文本,直到遇到特定的分隔符(默认是换行符'\n')
while (getline(tokenStream, token, delimiter)) {
tokens.push_back(token);
}
//倒序遍历打印vector容器的元素,加上空格输出
for (int i = tokens.size() - 1; i >= 0; i--) {
cout << tokens[i] << ' ';
}
}
int main() {
string s;
getline(cin, s);
ReverseWords(s);
return 0;
}
// 64 位输出请用 printf("%lld")
