541. 反转字符串 II

字符串

解题思路

  1. 当需要固定规律一段一段去处理字符串的时候,要想想在在 for 循环的表达式上做做文章;

  2. 每次移动 2 * k 的步长,移动之后再取 反转的范围

复杂度

  1. 时间复杂度:O(n)

  2. 空间复杂度: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("");
};

参考资料

  1. 卡尔:《代码随想录》

打赏作者
您的打赏是我前进的动力
微信
支付宝
评论

中午好👏🏻,我是 ✍🏻   疯狂 codding 中...

粽子

这有关于前端开发的技术文档和你分享。

相信你可以在这里找到对你有用的知识和教程。

了解更多

目录

  1. 1. 字符串
    1. 1.1. 解题思路
    2. 1.2. 复杂度
    3. 1.3. 代码实现
  2. 2. 参考资料