一、字符串
字符串是若干字符组成的有限序列,字符串在c++通过string定义可以使用符串处理的相关接口
二、字符串题目
反转字符串II
给定一个字符串 s
和一个整数 k
,从字符串开头算起,每计数至 2k
个字符,就反转这 2k
字符中的前 k
个字符。
- 如果剩余字符少于
k
个,则将剩余字符全部反转。 - 如果剩余字符小于
2k
但大于或等于k
个,则反转前k
个字符,其余字符保持原样。
示例 1:
输入: s = "abcdefg"
, k = 2
输出: "bacdfeg"
示例 2:
输入: s = "abcd"
, k = 2
输出: "bacd"
提示
1 <= s.length <= 10^4
s
仅由小写英文组成1 <= k <= 10^4
通过双指针反转字符串。用for循环来定义局部翻转边界,让i 每次移动 2 * k 。代码如下:
#include <iostream>
#include <string>
#include <algorithm> // 使用 std::swap
using namespace std;
// 交换字符串从 start 到 end 的部分
void swapString(string& s, int start, int end) {
for (int i = start, j = end; i < j; i++, j--) {
swap(s[i], s[j]);
}
}
// 按照每 2*k 的模式反转每个 k 长度的子串
string reverseStr(string s, int k) {
for (int i = 0; i < s.size(); i += (2 * k)) {
if (i + k < s.size()) {
swapString(s, i, i + k - 1);
}