LeetCode:Reverse Words in a String

来源:互联网 发布:anaconda 包含python 编辑:程序博客网 时间:2024/06/13 12:09
class Solution {public:    void reverseWords(string &s) {        int a, b;        int len = s.length();        //注意判断s是否一开始就为空、或者s全为空格        if(!len){            return ;        }        //spaces1        a = 0;        while(s[a] == ' ' && a < len){            a++;        }        s.assign(s, a, len);        if(a >= len){            return ;        }        //reverse1        len = len - a;        a = 0;        b = len - 1;        while(a < b){             s[a] ^= s[b] ^= s[a] ^= s[b];            a++;            b--;        }           //spaces2        a = 0;        while(s[a] == ' '){            a++;        }           s.assign(s, a, len);        s.append(" ");            //spaces3_reverse2_mid        int id = 0;        string temp = s;        a = b = -1;         len = s.length();        for(int i = 0; i < len; i++){            if(s[i] != ' ' && a == -1){                a = i;            }               if(a != -1 && s[i+1] == ' ' && s[i] != ' '){                for(int j = i; j >= a; j--, id++){                    temp[id] = s[j];                }                   temp[id++] = ' ';                a = -1;            }        }        s.assign(temp, 0, id-1);    }};

0 0
原创粉丝点击