难度:easy
简单题我重拳出击:
Java:
class Solution {
public String reverseStr(String s, int k) {
char[] cStr = s.toCharArray();
for (int i = 0; i < cStr.length; i += 2 * k) {
if (i + k <= cStr.length) {
reverse(cStr, i, i + k - 1);
} else {
reverse(cStr, i, cStr.length - 1);
}
}
return new String(cStr);
}
// [left, right]
public void reverse(char[] cStr, int left, int right) {
while (left < right) {
cStr[left] ^= cStr[right];
cStr[right] ^= cStr[left];
cStr[left] ^= cStr[right];
left++;
right--;
}
}
}
复杂度分析:
- 时间复杂度:O(n)
- 空间复杂度:O(1)