题解 | #单词倒排#
单词倒排
https://www.nowcoder.com/practice/81544a4989df4109b33c2d65037c5836
#include <bits/stdc++.h> using namespace std; int main() { string str; getline(cin,str); vector <string> s; int begin=0;//分割的起始位置 for(int i=0;i<str.size();i++){//遍历找到要分割的位置 if(!(str[i]>='a'&&str[i]<='z'||str[i]>='A'&&str[i]<='Z')){//不是字母时进行分割 s.push_back(str.substr(begin,i-begin));//把这块切割下来放入s中 for(int j=i;j<str.size();j++){//找到下一个begin位置 if(str[j]>='a'&&str[j]<='z'||str[j]>='A'&&str[j]<='Z'){ begin=j;//新的begin break; } } } } if(str[str.size()-1]>='a'&&str[str.size()-1]<='z'||str[str.size()-1]>='A'&&str[str.size()-1]<='Z'){//因为最后一个单词没有特殊字符分割会被漏掉,在这里进行判断看看最后一个是不是字母 s.push_back(str.substr(begin));//不指定长度时,默认会从begin位置开始,一直切割到末尾 } for(int i=0;i<s.size();i++){ cout<<s[s.size()-i-1]<<" "; } } // 64 位输出请用 printf("%lld")