题解 | #单词倒排#

单词倒排

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

全部评论

相关推荐

自学java狠狠赚一...:骗你点star的,港卵公司,记得把star收回去
点赞 评论 收藏
分享
斯卡蒂味的鱼汤:我认为就是逃课实习的学生技术才靠谱
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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