77. 翻转单词顺序

 

 

1.翻转整个句子

2.翻转每个单词

class Solution {
public:
    string reverseWords(string s) {
        /*翻转整个句子 */
        for(int i=0,j=s.size()-1; i < j; i++,j--)
            swap(s[i],s[j]);
        //cout<<s<<endl;    
        /*翻转每个单词*/  //相当于m、k2个指针
        for(int k = 0; k < s.size(); k ++)
        {
            int m=k;
            while(m < s.size() && s[m]!=' ') m++;
            //cout<<m<<endl;
            reverse(s.begin()+k,s.begin()+m);
            k = m;//m指向的是空格,执行到这一步后,会跳会for循环,执行k++,执行下一个不是空格的字符
        }
        return s;
    }
};

 reverse(s.begin()+k,s.begin()+m);

的功能和

 

        for(int i=0,j=s.size()-1; i < j; i++,j--)
            swap(s[i],s[j]);

一样

 

 

 

-----------------------20200324--------------------------

reverse(s.begin(),s.end()),能取到s.begin(),但是取不到s.end().左闭右开

 

posted @ 2020-02-22 16:59  靖愁  阅读(121)  评论(0编辑  收藏  举报