题目
思路
- 第一个tip,在涉及到有关字符串的操作的时候,可以把字符串先换成数组,因为js的字符串是一个不可以修改的对象
- 整体的思路是,用2k的长度卡出每一个左端点,但是右端点不看2k,而是看k。假如k还在字符串的长度范围里,那从左端点到k全部反转;如果k超出了字符串的长度范围,那么从左端点到字符串末端全部反转
代码
/**
* @param {string} s
* @param {number} k
* @return {string}
*/
var reverseStr = function(s, k) {
let ans = s.split("");
for(let i = 0 ; i < s.length; i += 2 * k){
//找到反转的节点
let end = i + k - 1 > s.length - 1 ? s.length - 1: i + k - 1;
for(let l = i, r = end; l < r; l ++, r--) [ans[l], ans[r]] = [ans[r], ans[l]];
}
return ans.join("");
};