LeetCode 151.翻转字符串里的单词
本文最后更新于628 天前,其中的信息可能已经过时,如有错误请发送邮件到tomding1065@gmail.com


题目链接/文章讲解/视频讲解:https://programmercarl.com/0151.%E7%BF%BB%E8%BD%AC%E5%AD%97%E7%AC%A6%E4%B8%B2%E9%87%8C%E7%9A%84%E5%8D%95%E8%AF%8D.html

1.这个题其实没什么特别完整的思路,反转字符串会,反转子字符串也会,移除数组元素会,双指针也会,放到一起就不会了,我这个题还是应该多做几次,跟着视频和文档自己写了一遍代码,我直接就是红温了,我发现我这个对于边界条件的处理,还是欠缺不少,这次是在遍历字符串的时候,反转子字符串的最后部分 i<=s.size()我没加=,其实都有提示的,因为最后在遍历到最后一个位置i == s.size()或者是遇到 s[i] == ' '的时候就最好反转一次子串。

2.这个题 先去除所有空格,然后反转整个字符串,最后反转子字符串。

CPP

class Solution {
public:
    string reverseWords(string &s) {
        removeExtraSpaces(s);
        reverse(s,0,s.size()-1);
        int startindex = 0;
        for(int i = 0;i<s.size();i++){
            if(i==s.size()||s[i] == ' '){
                reverse(s,startindex,i-1);
                startindex = i+1;
            }
        }
        return s;
    }

    void reverse(string &s,int start,int end){
        for(int i = start,j = end;i<j;i++,j--){
            swap(s[i],s[j]);
        }
    }


    void removeExtraSpaces(string &s){
        int slow = 0;
        for(int i =0;i<s.size();i++){
            if(s[i] != ' '){
                if(slow != 0)s[slow++] = ' ';
                while(i<s.size() && s[i] != ' '){
                    s[slow++] = s[i++];
                }
            }
        }
        s.resize(slow);
    }
};
文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇
Cream_dpl