剑指offer——反转单词顺序列

来源:互联网 发布:php mysql 存储过程 编辑:程序博客网 时间:2024/05/29 18:58

1. 题目描述

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

2. 思路分析

  思路就是从末尾开始查找。先定义一个指针指向当前末尾,另一个指针向前移动,找到空格的时候停下来,把已经查找到的串连接到答案中。思路比较简单,但是在写程序的时候,要在每个子串后面加空格,这个不要忘记了。

3. 解答(c++)

class Solution {public:    string ReverseSentence(string str) {        string ans;        if (str.empty()) {            return ans;        }        int len = str.size();        int head = 0;        int end = len-1;        int temp = len-1;        while(temp != head) {            if (str[temp] != ' ') {                --temp;            }            else {                for(int i = temp+1; i <= end; i++) {                    ans += str[i];                }                ans += " ";                end = temp-1;                temp--;            }        }        for(int i = 0; i <= end; i++) {            ans += str[i];        }        return ans;    }};

时间1ms,内存376kb。

原创粉丝点击