LeetCode - 541. Reverse String II
链接
题意
翻转字符串II
给定一个字符串和k,k表示要翻转前k个字母,然后跳过k个字母,再翻转k个字母...以此类推。当字符个数少于2k但大于等于k个时,翻转前k个字符并且剩余的保持不变。
思路
循环调用翻转字符串的方法即可。
代码
public class Solution {
public String reverseStr(String s, int k) {
char[] arr = s.toCharArray();
int start = 0;
int end = k - 1;
// 开始下标越界说明已经完成操作
while (start < s.length()) {
reverse(arr, start, start + k - 1);
// 不断调整位置
start += 2 * k;
}
return new String(arr);
}
public static void reverse(char[] arr, int start, int end) {
// 若end越界了,直接置为最后一个下标
if (end >= arr.length) end = arr.length - 1;
while (start < end) {
char t = arr[start];
arr[start] = arr[end];
arr[end] = t;
start++;
end--;
}
}
}