题目
给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符,再重新计数。
- 如果剩余字符少于
k个,则将剩余字符全部反转。 - 如果剩余字符小于
2k但大于或等于k个,则反转前k个字符,其余字符保持原样。
这道题就是上一题的沿用,根据题目确定反转字符的区间即可。
cpp
class Solution {
public:
string reverseStr(string s, int k) {
int i = 0;
while (i < s.size()) {
int p = i;
int q = i + k - 1;
if (q > s.size() - 1) {
q = s.size() - 1;
}
while(p < q)
{
swap(s[p], s[q]);
p++;
q--;
}
i += 2 * k;
}
return s;
}
};