541.反转字符串2
思路:
本题可以考虑每次遍历都是 i+=2*k,然后反转的时候只需要考虑i后面是否有k个元素。
若大于等于k个元素,反转 i 到 i+k-1 即可
若小于k个元素,则反转 i 到 length-1 即可
代码实现:
class Solution {
public String reverseStr(String s, int k) {
char[] ch = s.toCharArray();
for (int i = 0; i < ch.length; i += 2 * k) {
if (i + k <= ch.length) {
reverse(ch, i, i + k - 1);
continue;
}
reverse(ch, i, ch.length - 1);
}
return new String(ch);
}
public void reverse(char[] ch, int i, int j) {
for (; i < j; i++, j--) {
char temp = ch[i];
ch[i] = ch[j];
ch[j] = temp;
}
}
}