0541. Reverse String II
Description
**Input:** s = "abcdefg", k = 2
**Output:** "bacdfeg"**Input:** s = "abcd", k = 2
**Output:** "bacd"ac
class Solution {
public String reverseStr(String s, int k) {
// edge cases
if (s.length() <= 1 || k <= 1) return s;
char[] chars = s.toCharArray();
int l = 0, i = 0;
do {
i += 2 * k;
int r = Math.min(l + k - 1, s.length() - 1); // elegant
reverse(chars, l, r);
l = i;
} while (i < s.length());
return String.valueOf(chars);
}
private void reverse(char[] chars, int left, int right) {
while (left < right) {
char tmp = chars[left];
chars[left++] = chars[right];
chars[right--] = tmp;
}
}
}Last updated