给定一个字符串 s 和一个整数 k,你需要对从字符串开头算起的每隔 2k 个字符的前 k 个字符进行反转。
- 如果剩余字符少于 k 个,则将剩余字符全部反转。
- 如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。
示例
输入: s = “abcdefg”, k = 2 输出: “bacdfeg”
题解
遍历字符串,每2k个字符遍历一次
反转0 - 2k 2k - 4k …. 的字符串
最后一次判断字符数进行反转
/*** @param {string} s* @param {number} k* @return {string}*/var reverseStr = function(s, k) {const arr = s.split('')for (let i = 0; i < arr.length; i += 2 * k) {let end = i + 2 * k - 1if (end > arr.length - 1) {end = arr.length - 1}reverse(arr, k, i, end)}return arr.join('')};function reverse(arr, k, start, end) {let mid = start + k - 1if (end - start + 1 < k) {mid = end}while (mid > start) {const m = arr[mid]const st = arr[start]arr[mid] = starr[start] = mmid--start++}}
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-string-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
