541. 反转字符串 II
js
;(function () {
/**
* 541. 反转字符串 II
* 给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。
* 如果剩余字符少于 k 个,则将剩余字符全部反转。
* 如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。
*
* 输入:s = "abcdefg", k = 2
* 输出:"bacdfeg"
*
* 输入:s = "abcd", k = 2
* 输出:"bacd"
*
*/
function reverseStr(s: string, k: number): string {
// 方法一:
let splitArr: string[] = []
for (let i = 0; i < s.length; i += 2 * k) {
splitArr.push(s.slice(i, i + 2 * k))
}
splitArr = splitArr.map((item) => {
let tempArr = Array.from(item) // 或 item.split('')
// 反转 item 中的前 k 个字符
for (let i = 0; i < Math.ceil(k / 2); i++) {
let temp = tempArr[i]
let rightK = tempArr[k - 1 - i]
tempArr[i] = rightK
tempArr[k - 1 - i] = temp
}
return tempArr.join('')
})
return splitArr.join('')
// 方法二:
}
const s = 'abcdefg',
k = 2
console.log(reverseStr(s, k))
})()