您的位置:首页 > 其它

LeetCode(151) Reverse Words in a String

2015-08-10 09:05 483 查看
[code]class Solution {
public:

    void reverseWord(string &s, int index1, int index2) {

        index2--;

        while(index2 > index1) {

            char tmp = s[index2];
            s[index2] = s[index1];
            s[index1] = tmp;

            index1++;
            index2--;

        }

        return;

    }

    void removeSpace(string &s) {

        //int length = s.size();
        int index = 0;

        while(index < s.size() && s[index] == ' ') 

            s.erase(index, 1);

        while(index < s.size()) {    

            while(s[index] != ' ')

                index++;

            index++;

            while(index < s.size() && s[index] == ' ')

                s.erase(index, 1);

        }

        while(s.size() >= 1 && s[s.size() - 1] == ' ')

            s.erase(s.size() - 1);

    }

    void reverseWords(string &s) {

        reverse(s.begin(), s.end());
        s.push_back(' ');
        int length = s.size();

        int index1 = 0;
        int index2 = 0;
        while(true) {

            while(index1 < length && s[index1] == ' ')

            index1++;

            if(index1 == length)

                break;

            index2 = index1;

            while(s[index2] != ' ')

                index2++;

            reverseWord(s, index1, index2);

            index1 = index2;

        }

        removeSpace(s);

    }
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: