541. Reverse String II
Description
Given a string and an integer k, you need to reverse the first k characters for every 2k characters counting from the start of the string. If there are less than k characters left, reverse all of them. If there are less than 2k but greater than or equal to k characters, then reverse the first k characters and left the other as original.
Example:
Input: s = "abcdefg", k = 2 Output: "bacdfeg"Restrictions:
- The string consists of lower English letters only.
- Length of the given string and k will in the range [1, 10000]
Solution
/**
* @param {string} s
* @param {number} k
* @return {string}
*/
var reverseStr = function(s, k) {
"use strict";
function reverse(ary, i, j) {
for (; i < j && i < ary.length; i++, j--) {
let tmp = ary[i];
ary[i] = ary[j];
ary[j] = tmp;
}
}
let result = s.split("");
let i = k;
while (true) {
reverse(result, i-k, i-1);
if (i >= s.length) {
break;
}
i += 2*k;
}
return result.join("");
};