给定一个字符串 s 和一个整数 k,你需要对从字符串开头算起的每隔 2k 个字符的前 k 个字符进行反转。
如果剩余字符少于 k 个,则将剩余字符全部反转。
如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。
示例:
输入: s = “abcdefg”, k = 2
输出: “bacdfeg”
提示:
该字符串只包含小写英文字母。
给定字符串的长度和 k 在 [1, 10000] 范围内。
class Solution {
public String reverseStr(String s, int k) {
char[] myCharArr = s.toCharArray();
//从第一个字符开始,每次间隔 2k个字符
for (int start = 0; start < myCharArr.length; start += 2 * k) {
//每隔 2k个字符前 k个字符的首位下标
int i = start;
//每隔 2k个字符前 k个字符的末尾下标
int j = i + k - 1;
//剩余字符小于 k个
if(i+k-1 > myCharArr.length-1)
j = myCharArr.length - 1;
//反转
while (i < j) {
char temp = myCharArr[i];
myCharArr[i++] = myCharArr[j];
myCharArr[j--] = temp;
}
}
return String.valueOf(myCharArr);
}
}