LeetCode || Reverse Words in a String

来源:互联网 发布:java用循环打印五角星 编辑:程序博客网 时间:2024/05/17 05:47
class Solution {public:    void reverse(string& str, int s, int e)    {        if(s > e)            return;                for(int i = s;i<=(s+e)/2 ;i++)        {            char tmp = str[i];            str[i] = str[e-i+s];            str[e-i+s] = tmp;        }    }        void RemoveBlank(string& s)//移除string s前后的所有空格。    {        if(s.empty())            return;        s.erase(0,s.find_first_not_of(" "));        s.erase(s.find_last_not_of(" ") + 1);    }        void reverseWords(string &s) {                RemoveBlank(s);//去除两端空格                reverse(s, 0, s.size()-1);                int i = 0, j = 0;                while(1)        {            i = j;            while(i < s.size() && s[i] == ' ')                i++;                            if(i >= s.size())                break;                            if(i-j-1>0)//需要移除中间的空格,每个words之间只允许有一个空格            {                s.erase(j, i-j-1); //erase后i与j的位置应该发生改变                i =  j+1;            }            j = i;            while(j < s.size() && s[j]!=' ')                j++;            reverse(s, i, j-1);            }    }};

0 0
原创粉丝点击