双指针
class Solution {
public String reverseStr(String s, int k) {
char[] chars = s.toCharArray();
/**
* 循环的间隔设置为2k,如果最后的区间小于k,全部反转;大于k小于2k则反转前k个
* 每次右边界设置为i + k - 1,如果不足k个就取最后一个元素
*/
for (int i = 0; i < chars.length; i += 2 * k) {
int left = i;
int right = Math.min(i + k - 1, chars.length - 1);
char temp;
while (left < right){
temp = chars[left];
chars[left] = chars[right];
chars[right] = temp;
left++;
right--;
}
}
return new String(chars);
}
}
/**
* 时间复杂度 O(n)
* 空间复杂度 O(n)
*/
https://leetcode-cn.com/problems/reverse-string-ii/