反转字符串二
题目描述:
给定一个字符串和一个整数 k,你需要对从字符串开头算起的每个 2k 个字符的前k个字符进行反转。如果剩余少于 k 个字符,则将剩余的所有全部反转。如果有小于 2k 但大于或等于 k 个字符,则反转前 k 个字符,并将剩余的字符保持原样。
示例:
输入: s = "abcdefg", k = 2
输出: "bacdfeg"来源:力扣(LeetCode)
OJ链接相关: OJ反转字符串
分析:
就在按区间遍历的基础上再设置一个标记, 一次顺序遍历, 一次逆序遍历, 上代码
class Solution {
public:
string reverseStr(string s, int k) {
string res;
int size = s.size();
int i, j, m;
bool flag = true;
for (i = 0, j = k - 1; j < size; i = j + 1, j = i + k - 1) {
if (flag) {
for (m = j; m >= i; --m) {
res.push_back(s[m]);
}
flag = false;
}
else {
for (m = i; m <= j; ++m) {
res.push_back(s[m]);
}
flag = true;
}
}
if (flag) {
for (m = size - 1; m >= i; --m) {
res.push_back(s[m]);
}
}
else {
for (m = i; m < size; ++m) {
res.push_back(s[m]);
}
}
return res;
}
};