字符串
解题思路
当需要固定规律一段一段去处理字符串的时候,要想想在在 for 循环的表达式上做做文章;
每次移动 2 * k 的步长,移动之后再取 反转的范围;
复杂度
-
时间复杂度:
O(n)
; -
空间复杂度:
O(1)
;
代码实现
var reverseStr = function (s, k) {
const len = s.length;
let strList = [...s];
// 每次移动 2 * k
for (let i = 0; i < len; i += 2 * k) {
// 判断是否需要有反转的区间
let l = i - 1;
let r = i + k > len ? len : i + k;
// 反转
while (++l < --r) {
[strList[l], strList[r]] = [strList[r], strList[l]];
}
}
return strList.join("");
};
参考资料
leetcode🧑💻 209. 长度最小的子数组
上一篇