单序列双指针篇--罗姆的刷题记录

单序列双指针篇

反转字符串

本质是相向双指针。

344. 反转字符串

code
class Solution {
public:
    void reverseString(vector<char>& s) {
        int n = s.size();
        int l = 0, r = n - 1;
        char tmp;
        while (l < r) {
            tmp = s[r];
            s[r] = s[l];
            s[l] = tmp;
            l++;
            r--;
        }
        return;
    }
};

3794. 反转字符串前缀

给你一个字符串 s 和一个整数 k。
反转 s 的前 k 个字符,并返回结果字符串。

code
class Solution {
public:
    string reversePrefix(string s, int k) {
        for (int l = 0, r = k - 1; l < r; l++, r--) {
            swap(s[l], s[r]);
        }
        return s;
    }
};

2000. 反转单词前缀 1199

给一个下标从0开始的字符串word 和一个字符 ch 。
找出ch第一次出现的下标i, 反转word 中从下标0开始, 到下标i 结束的那段字符。不存在ch 则不反转。

code
class Solution {
public:
    string reversePrefix(string word, char ch) {
        int i = word.find(ch);
        if (i != string::npos) {
            for (int l = 0, r = i; l < r; l++, r--) {
                swap(word[l], word[r]);
            }
        }

        return word;
    }
};
posted on 2026-07-25 21:47  Eura42  阅读(0)  评论(0)    收藏  举报