思路:
这个题只要让for循环i 每次移动 2 * k 就可以找到2k长度的区间,找到之后然后进行规则判定进行反转。
遇到固定长度区间的题目,可以考虑for循环中做相应的长度变化。
class Solution {
public char[] reverseString(char[] s,int left,int right) {
while (left < right){
char temp = s[left];
s[left] = s[right];
s[right] = temp;
left++;
right--;
}
return s;
}
public String reverseStr(String s, int k) {
char[] chars = s.toCharArray();
for (int i = 0; i < chars.length; i+= 2 * k) {
int left = i;
int right = chars.length - 1 > left + k -1 ? left+k-1:chars.length-1;
chars = reverseString(chars,left,right);
}
return new String(chars);
}
}