思路: Naive
注意 i
的步进: i += 2 * k
注意翻转函数的步进: i++, j--
要加判断 if (i + k > n)
,如果不加的话,会 IndexOutOfBound
。
如果超出长度,则翻转全部.
class Solution {
public String reverseStr(String s, int k) {
char[] ch = s.toCharArray();
int n = ch.length;
for (int i = 0; i < n; i += 2 * k) {
if (i + k > n) {
reverse(ch, i, n - 1);
} else {
reverse(ch, i, i + k - 1);
}
}
return new String(ch);
}
public void reverse(char[] ch, int i, int j) {
for (; i < j; i++, j--) {
char c = ch[i];
ch[i] = ch[j];
ch[j] = c;
}
}
}