[Leetcode] 541.反转字符串II
题目链接:541.反转字符串II
思路:
- 在String上操作不好操作,我们新建一个char数组来复制原String进行操作;
- 在交换的起点是2 * k * i;
- 有一种情况需要特判,当长度不满 k 时就要缩小区间。
代码(Java):
public static String reverseStr(String s, int k) {
char[] str = s.toCharArray();
for(int i = 0; i < str.length; i += 2 * k) {
int left = i;
//判断尾数够不够k个来取决右指针的位置
int right = Math.min(left + k - 1, str.length - 1);
while(left < right) {
//用异或运算反转
str[left] ^= str[right];
str[right] ^= str[left];
str[left] ^= str[right];
left ++;
right --;
}
}
return String.valueOf(str);
}