/** * 这道题主要是找到需要翻转字符的下标 * i 每次递增都是 2k */ public String reverseStr(String s, int k) { char[] chars = s.toCharArray(); //i的起点每次递增2k for (int i = 0; i < chars.length; i = i + 2 * k) { if (i + k > chars.length - 1) { reverseChar(chars, i, chars.length - 1); } else { reverseChar(chars, i, i + k - 1); } } return new String(chars); }
public static void reverseChar(char[] chars, int l, int r) { while (l < r) { char temp = chars[l]; chars[l] = chars[r]; chars[r] = temp; l++; r--; } }