码迷,mamicode.com
首页 > 其他好文 > 详细

Reverse Words in a String

时间:2014-07-29 21:52:52      阅读:239      评论:0      收藏:0      [点我收藏+]

标签:blog   os   io   for   2014   问题   时间   amp   

问题描述:

Given an input string, reverse the string word by word.

For example,
Given s = "the sky is blue",

return "blue is sky the".

解题思路:

每遍历出一个单词时,将该单词添加一个空格字符(如果临时字符串为空,即扫描出第一个单词,就不要添加空格字符),然后添加到一个临时字符串的首部。所以时间复杂度和空间复杂度都为O(n)。

需要注意的条件:遍历不要超出字符串长度。

class Solution {
public:
    void reverseWords(string &s) {
        int length = s.size();
        if (0 == length)
            return;
        string substr, temp;
        substr = temp = "\0";
        int i = 0, pos;
        while (i < length)
        {
            while (' ' == s[i] && i < length) /* 过滤字符之间的空格 */
                i++;
            if (i == length) /* 所有字符全部处理完 */
                break;
            pos = i;
            while (s[i] != ' ' && i < length)/* 找到下一个要处理的单词 */
                i++;
            substr = s.substr(pos, i-pos);/* 获取要处理的单词 */
            if (temp.size() > 0)
                substr += " " + temp;
            temp = substr;
        }
        s = temp;
    }
};


Reverse Words in a String,布布扣,bubuko.com

Reverse Words in a String

标签:blog   os   io   for   2014   问题   时间   amp   

原文地址:http://blog.csdn.net/wan_hust/article/details/38277919

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!