Reverse Words in a String

来源:互联网 发布:2016淘宝新店扶持期 编辑:程序博客网 时间:2024/05/23 14:29

题目:Given an input string, reverse the string word by word.

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

Update (2015-02-12):
For C programmers: Try to solve it in-place in O(1) space.

思路:

本题的思路是每一次在s里面把字符串倒过来,这里是自己写一个倒转的程序。我在自己写的时候发现如果连续出现空格的问题,后来发现有一个连续判断,再额外设置一个变量的方法。在最后记得倒转整个s字符串。

另外记得里面一定判断下i是否在整个数组长度之内。


代码:

class Solution {public:    void reverseWords(string &s) {        if(s.empty())   return;        int i=0,k=0;        while(s[i]==' '&&i<s.length()){            i++;        }        //i此时不为空        while(i<s.length()){            int start=k;            while(s[i]!=' '&&i<s.length()){                s[k++]=s[i++];            }//此时i空            if(k>start+1){                reverseSubWord( s, start,k-1);            }                        while(s[i]==' '&&i<s.length()){                i++;            }            if(i<s.length())    s[k++]=' ';//一开始是这个地方没有设置,如果i到了最后,就不要设置空格        }                if(k<s.length()){            s.erase(s.begin()+k,s.end());        }                if(k >1) reverseSubWord( s, 0,k-1) ;    }        void reverseSubWord(string &s,int start,int end){        while(start<=end){            swap(s[start],s[end]);            start++;end--;        }    }    };


0 0
原创粉丝点击