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