和这个蛮像
LeetCode第 25 题:K 个一组翻转链表(C++)_qq_32523711的博客-CSDN博客
但是本题简单多了,数组操作比链表要考虑的东西少很多。
class Solution {
public:
void reverse(string &s, int l, int r){
while(l < r)
swap(s[l++], s[r--]);
}
string reverseStr(string s, int k) {
if(k == 0 || k == 1) return s;
int i = 0;
for(; i+2*k < s.size(); i += 2*k){
reverse(s, i, i+k-1);
}
if(i+k > s.size()){//剩余字符小于k个
reverse(s, i, s.size()-1);
}else//剩余字符大于k个小于2*k个
reverse(s, i, i+k-1);
return s;
}
};