反转单词顺序列

来源:互联网 发布:知乎社区 编辑:程序博客网 时间:2024/06/04 19:37

题目

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

思路

从尾到头扫描字符串,在没有遇到空格之前把当前扫描的字符存到一个临时字符串里,遇到空格之后把这个临时字符串里面的字符从尾到头输出,然后再补上空格,一直到扫描结束。

参考代码

class Solution{public:    string ReverseSentence(string& str)    {        if (str == "") return str;        string s;        int length = str.length(), i = length - 1;        while (i >= 0)        {            string temp = "";            while (i >= 0 && str[i] != ' ')            {                temp += str[i--];            }            int len = temp.length();            for (int j = len - 1; j >= 0; --j)            {                s += temp[j];            }            if (i >= 0)            {                s += ' ';                i--;            }        }        return s;    }};
原创粉丝点击