JZ44 翻转单词顺序列**

题目描述

牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?

思路

两步走

  • 先把整体句子翻转
  • 再把单词进行翻转

这样只需要写一个翻转函数(用首尾指针的方法)
在第二步中,需要找到空格的位置;其次,还有什么时候结束的问题,也就是循环结束条件

代码

class Solution {
public:
    string ReverseSentence(string str) {
        ReverseWord(str, 0, str.size() - 1);
        int begin = 0, end = 0;
        while (end<str.size())
        {
            while (str[end] != ' ' && str[end] != '\0')  //找到空格
            {
                end++;
            }
            ReverseWord(str, begin, end - 1);  //翻转单词
            end++; 
            begin = end;   //下一个单词的开始
        }
        return str;

    }

    void ReverseWord(string &res, int begin, int end)  //整体翻转
    {
        char temp;
        while (begin < end)
        {
            temp = res[begin];
            res[begin] = res[end];
            res[end] = temp;
            begin++;
            end--;
        }
    }
};
全部评论

相关推荐

菜菜咪:1. 可以使用简历网站的模版,美观度会更好一点 2. 邮箱可以重新申请一个,或者用qq邮箱的别名,部分hr可能会不喜欢数字邮箱 3. 项目经历最好分点描述,类似的项目很多,可以参考一下别人怎么写的 4. 自我评价可加可不加,技术岗更看重技术。最后,加油,优秀士兵
点赞 评论 收藏
分享
勤奋努力的椰子这就开摆:美团骑手在美团工作没毛病
投递美团等公司10个岗位
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务