题解 | #单词倒排#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")