数据结构与算法每日一题——快慢指针(541. 反转字符串 II)

80 阅读1分钟

541. 反转字符串 II

/**
 * @param {string} s
 * @param {number} k
 * @return {string}
 */
var reverseStr = function (s, k) {
    // 方法一
    let len =s.length
    let arr =s.split('')
    for(let i =0;i<len;i+=2*k){
        let l=i-1,r=i+k>len?len:i+k
        while(++l<--r){
            [arr[l],arr[r]] =[arr[r],arr[l]]
        }
    return arr.join('')
  }
}
    // 方法二
    // const len = s.length;
    // let resArr = s.split(""); 
    // for(let i = 0; i < len; i += 2 * k) {
    //     let l = i - 1, r = i + k > len ? len : i + k;
    //     while(++l < --r) [resArr[l], resArr[r]] = [resArr[r], resArr[l]];
    // }
    // return resArr.join("");
// };
//     const n = s.length;
//     let arr = s.split('')
//     // const arr = Array.from(s);
//     for (let i = 0; i < n; i += 2 * k) {
//         reverse(arr, i, Math.min(i + k, n) - 1);
//     }
//     return arr.join('');
// }
// 反转
// let reverse = function (s, l, r) {
//     while (l < r) {
//         [s[l], s[r]] = [s[r], s[l]]
//         l++;
//         r--
//     }
// }
// 反转
// const reverse = (arr, left, right) => {
//     while (left < right) {
//         const temp = arr[left];
//         arr[left] = arr[right];
//         arr[right] = temp;
//         left++;
//         right--;
//     }
// }