题解 | #单词倒排#

单词倒排

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")

全部评论

相关推荐

点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务