LeetCode——第五百五十七題(C++):反轉字符串中的單詞|||

題目
給定一個字符串,你需要反轉字符串中每個單詞的字符順序,同時仍保留空格和單詞的初始順序。

示例 1:
輸入: “Let’s take LeetCode contest”
輸出: “s’teL ekat edoCteeL tsetnoc”

**注意:**在字符串中,每個單詞由單個空格分隔,並且字符串中不會有任何額外的空格。

思路
用將單詞放入棧的方式,如果沒有到字符串末尾,那麼空格是一個單詞結束的標誌,如果到了最後一個單詞,就判斷是否爲字符串末尾,類似於字符串反轉。

運行成功的代碼

class Solution {
public:
    string reverseWords(string s) {
        stack<char> S;
        int i;
        int j;
        int k;
        k=i=0;
        //k用於記錄每個單詞的開始位置
        for(i=0;i<s.length()+1;i++)
        {
            if(s[i]!=' '&&i!=s.length())
            {
                S.push(s[i]);
            }
            else 
            {
                for(j=k;j<i;j++)
                {
                    s[j]=S.top();
                    S.pop();
                }
                k=i+1;
                //這裏是記錄下一個單詞的初始位置
            }
        }
        return s;
    }
};

運行結果
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章