代码随想录Day8打卡 字符串(2)

65 阅读1分钟

344 反转字符串

双指针替换彼此即可

var reverseString = function(s) {
    let left = 0, right = s.length - 1
    while (left <= right) {
        [s[left], s[right]] = [s[right], s[left]]
        left += 1
        right -= 1
    }
};

541 反转字符串2

每次移动2k,然后反转前k个

var reverseStr = function(s, k) {
    let arr = s.split("")
    for (let i = 0; i < s.length; i += 2*k) {
        reverse(arr, i, i + k - 1)
    }
    return arr.join("")
};

function reverse (arr, i, j) {
    while (i <= j) {
        const tmp = arr[i]
        arr[i] = arr[j]
        arr[j] = tmp
        i += 1
        j -= 1
    }
}

151 反转字符串中的单词

var reverseWords = function (s) {
    const arr = s.trim().split(" ")
    const res = []

    for (let i = arr.length - 1; i >= 0; i--) {
        const word = arr[i].trim()
        if (word !== "") {
            res.push(word)
        }

    }
    return res.join(" ")
};