
leetcode链接
示例 1: 输入:s = “abcdefg”, k = 2 输出:“bacdfeg”
示例 2: 输入:s = “abcd”, k = 2 输出:“bacd”
思路:定义一个指针i,i每次移动2*k步,再定义left指针和right指针,left=i,right=i+k-1。对[left,right]区间内的数据进行反转。
代码:
class Solution { //反转字符串II
public:
string reverseStr(string s, int k) {
int left, right;
for (int i = 0; i < s.size(); i += (2 * k)) {
left = i;
right = i + k - 1;
if (right >= s.size()) {
right = s.size() - 1;
}
while (left < right) {
swap(s[left], s[right]);
left++;
right--;
}
}
return s;
}
};
int main()
{
string s = "abcdefg";
Solution solution;
string temp = solution.reverseStr(s, 2);
for (char i : temp)
printf("%ct", i);
printf("n");
return 0;
}