44、翻转单词顺序列

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

class Solution {
public:
    string ReverseSentence(string str) {
        int n = str.size();
        ReverseWord(str,0,n-1);
        int i = 0;
        int s =0,e = 0;
        while(i<n)
        {
            while(i<n&&str[i]==' ')
                i++;
            s = i;  //已经指到了实际的字符
            e = i;
            while(i<n&&str[i]!=' ')
            {
                i++;
               e++;
            }
            ReverseWord(str,s,e-1);  //最后一次循环到末尾时,e = n
        }
        return str;
    }
    void ReverseWord(string &str,int start,int end)
    {
        while(start<end)
           swap(str[start++],str[end--]);
        return;
    }
};
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 题目描述牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的...
    quiterr阅读 352评论 0 0
  • 翻转单词顺序列 题目描述 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事C...
    Jacinth阅读 420评论 0 0
  • 题目描述牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的...
    NoFacePeace阅读 184评论 0 0
  • 剑指offer 最近在牛客网上刷剑指offer的题目,现将题目和答案(均测试通过)总结如下: 第一个只出现一次的字...
    闫阿佳阅读 597评论 0 3
  • 记得不久前桃花盛开日子里,哪怕是在夜晚昏黄的路灯下,依然格外显眼,时常看见有人停下脚步,只为了给桃花留影。 我当然...
    最后的十一阅读 1,081评论 0 2