day8 | 字符串

541. 反转字符串 II

写了一个通用的翻转函数 然后用到了指针做下标的思想

其实写复杂了,reverse可以直接调库,然后可以用一个for循环做起点,终点加个长度就ok了

class Solution {
public:
    // 将s的[L, R]范围内翻转
    void reverseS(string& s, int L, int R)
    {
        int i = L, j = R;
        while (i < j)
        {
            swap(s[i++], s[j--]);
        }
    }

    string reverseStr(string s, int k) {
        int n = s.size();
        int end = 0;
        while (end < n)
        {
            int length = n - end;
            if (length < k) 
            {
                reverseS(s, end, n - 1);
                end = n;
            }
            else 
            {
                reverseS(s, end, end + k - 1);
                end += 2*k;
            }
        }
        return s;
    }
};

剑指 Offer 58 - II. 左旋转字符串

技巧性

class Solution {
public:
    string reverseLeftWords(string s, int n) {
        string t = s + s;
        return t.substr(n, s.size());
    }
};

151. 反转字符串中的单词

我的思路是:先去前后空格(似乎是多余的),整体翻转后对单个单词翻转。再遍历一遍去掉多余的空格

class Solution {
public:
    // 整体翻转后对单个单词翻转
    string reverseWords(string t) {
        int L = 0, R = t.size() - 1;
        while (L < R && t[L] == ' ') L++;
        while (L < R && t[R] == ' ') R--;
        string s = t.substr(L, R-L+1);
        reverse(s.begin(), s.end());
        int n = s.size();
        for (int i = 0; i < n; i ++)
        {
            int j = i;
            while (j < n && s[j] != ' ') j ++;
            reverse(s.begin() + i, s.begin() + j);
            i = j;
        }

        // 去除中间的空格
        string res;
        for (int i = 0; i < s.size(); i ++)
        {
            if (s[i] == ' ') continue;
            int j = i + 1;
            while (j < n && s[j] != ' ') j ++;
            res += s.substr(i, j-i);
            res += " ";
            i = j;
        }
        res.pop_back();
        return res;
    }
};
暂无评论

发送评论 编辑评论


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