leetcode[151] 翻转字符串里的单词

问题:给定一个字符串,逐个翻转字符串中的每个单词。

思路:先局部, 再整体。

第一遍,一边去除掉多余的空格,一边局部翻转单词。

第二遍,整个句子翻转一遍。

代码:

class Solution {
public:
    string reverseWords(string& s) {
        int len=s.size();
        int i=0,j=0;
        while(i<len)
        {
            while(i<len&&s[i]==' ')  // 同时处理句首、句中的空格。
                ++i;
            if(i<len&&j>0)
                s[j++]=' ';
            int start=j;
            while(i<len&&s[i]!=' ')
                s[j++]=s[i++];
            reverse(s.begin()+start,s.begin()+j);
        }
        s.resize(j);
        reverse(s.begin(),s.end()); 
        return s;
    }
};

复杂度分析:时间复杂度为O(n),空间复杂度为O(1)。

发布了115 篇原创文章 · 获赞 14 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_22148493/article/details/105203953