思路:
題目給我們加了幾個規則,剩余長度小于2k,大于等于k就反轉k個,小于k就全部反轉,我們按照這個邏輯來就行。
第一就是大于等于k就反轉k個,我們for循環肯定是i+=2k了,接下來就是判斷是否大于等于k,大于等于就反轉,頭是i, 尾是i+k。
第二就是小于k,我們就直接頭是i,尾是長度-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 begin, int end) {while (begin < end) {char temp = ch[begin];ch[begin] = ch[end];ch[end] = temp;begin++;end--;}}
}
?