1. 程式人生 > >LeetCode 557. 反轉字串中的單詞 III(C++)

LeetCode 557. 反轉字串中的單詞 III(C++)

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

示例 1:

輸入: "Let's take LeetCode contest"
輸出: "s'teL ekat edoCteeL tsetnoc"

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

C++

class Solution {
public:
    string reverseWords(string s) 
    {
        int n=s.length();
        vector<int> temp;
        for(int i=0;i<n;i++)
        {
            if(s[i]==' ')
            {
                temp.push_back(i);
            }
        }
        int m=temp.size();
        if(m==0)
        {
            reverse(s.begin(),s.end());
            return s;
        }
        reverse(s.begin(),s.begin()+temp[0]);
        for(int i=0;i<m-1;i++)
        {
            reverse(s.begin()+temp[i]+1,s.begin()+temp[i+1]);
        }
        reverse(s.begin()+temp[m-1]+1,s.end());
        return s;       
    }
};