题解 | #单词倒排#

单词倒排

https://www.nowcoder.com/practice/81544a4989df4109b33c2d65037c5836

#include <iostream>
#include <string>
using namespace std;
//翻转字符串
void reverse(string& str,int start,int end){
    while(start<end){
        char t=str[start];
        str[start]=str[end];
        str[end]=t;
        start++;
        end--;
    }
}

int main() {
    string str;
    getline(cin,str);
    int left=0;
    for(int right=0;right<str.size();++right){//去除其他字符
        if((str[right]<='Z'&&str[right]>='A')||(str[right]<='z'&&str[right]>='a')){
            if(left>0) str[left++]=' ';
            while(right<str.size()&&((str[right]<='Z'&&str[right]>='A')||(str[right]<='z'&&str[right]>='a')))
                str[left++]=str[right++];
        }
    }
    str.resize(left);
    reverse(str,0,str.size()-1);//先整体翻转
    left=0;
    for(int left=0,right=0;right<=str.size();++right){//再逐单词翻转
        if(str[right]==' '||right==str.size()){
            reverse(str,left,right-1);
            left=right+1;
        }
    }
    cout <<str;
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

野猪不是猪🐗:还是太卑微了,什么叫放弃本次面试应该说经过评估,贵公司与自己不匹配,决定不再推进后续流程
点赞 评论 收藏
分享
爱吃烤肠的牛油最喜欢...:50K是ssp了估计,ssp的人家多厉害都不用说,每年比例大概在百分之5左右
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务