151. Reverse Words in a String

For C programmers: Try to solve it in-place in O(1) space.
看到這句話,那就在原位置上上替換好啦。

class Solution {
public:
    void reverseWords(string &s) 
    {
        if (s.empty())
        {
            return;
        }
        for (int i = 0; i < s.size() - 1; ++i)
        {
            if (s[i] == ' ' && s[i + 1] == ' ')
            {
                s.erase(s.begin() + i + 1);
                --i;
            }
        }
        if (!s.empty() && s.front() == ' ')
        {
            s.erase(s.begin());
        }
        if (!s.empty() && s.back() == ' ')
        {
            s.erase(s.end() - 1);
        }
        if (s.empty())
        {
            return;
        }
        reverse(s.begin(), s.end());
        int posRec = 0;
        for (int i = 0; i < s.size(); i = posRec)
        {
            int j = i;
            while (j < s.size() && s[j] != ' ')
            {
                ++j;
            }
            posRec = j + 1;
            --j;
    
            while (i < j)
            {
                swap(s[i++], s[j--]);
            }
    
        }
    }
};

第一次提交時候,第一個判空條件沒有寫,報錯。
因為s.size() - 1 != -1,而是4294967295

http://www.itdecent.cn/p/a4af6e63ebd9

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容