单序列双指针篇
反转字符串
本质是相向双指针。
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;
}
};
浙公网安备 33010602011771号