/**
* 541. 反转字符串 II
*
*/
public class Solution541 {
public String reverseStr(String s, int k) {
char[] chars = s.toCharArray();
int length = chars.length;
// 如果剩余字符少于 k 个,则将剩余字符全部反转。
//如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。
for (int i = 0; i < length; i += 2 * k) {
int end = i + k < length ? k - 1: length - i - 1;
for (int j = 0; j <= end / 2; j++) {
char temp = chars[i + j];
chars[i + j] = chars[i + end - j];
chars[i + end - j] = temp;
}
}
return new String(chars);
}
public static void main(String[] args) {
Solution541 solution541 = new Solution541();
System.out.println(solution541.reverseStr("abcd", 4));
System.out.println(solution541.reverseStr("abcdefg", 2));
System.out.println("bacdfeg".equals(solution541.reverseStr("abcdefg", 2)));
}
}
03-18
817