代码随想录训练营day08 |

59 阅读1分钟

反转字符串

题目链接:反转字符串

  • 思路:双指针
var reverseString = function(s) {
    let left = 0, right = s.length - 1
    while(left < right) {
        [s[left], s[right]] = [s[right], s[left]]
        left++
        right--
    }
    return s
};

翻转字符串里面的单词

题目链接:翻转字符串里面的单词

var reverseWords = function(s) {
    s = s.replace(/(^\s*)|(\s*$)/g, '').replace(/\s{1,}/g, ' ')

    const get = (str, left, right) => {
        while(left < right) {
            [str[left], str[right]] = [str[right], str[left]]
            left++
            right--
        }
    }

    const arr = Array.from(s)
    get(arr, 0, arr.length - 1)
    let left = 0
    for(let right = 0; right < arr.length + 1; right++) {
        if(arr[right] === ' ' || right === arr.length) {
            get(arr, left, right - 1)
            left = right + 1
        }
    }

    return arr.join('')
};

反转字符串||

题目链接:反转字符串||

var reverseStr = function(s, k) {
    const get = (str, left, right) => {
        while(left < right) {
            [str[left], str[right]] = [str[right], str[left]]
            left++
            right--
        }
    }
    s = s.split('')
    for(let i = 0; i < s.length; i += (2 * k)) {
        if(s.length - i >= k) {
            get(s, i, i + k - 1)
            continue
        }
        get(s, i, s.length - 1)
    }

    return s.join('')
};

替换空格

题目链接:替换空格

var replaceSpace = function(s) {
    return s.replace(/\s/g, '%20')
};

左旋转字符串

题目链接:左旋转字符串

var reverseLeftWords = function(s, n) {
    const arr = Array.from(s)
    const restArr = arr.slice(0, n)
    arr.splice(0, n)
    return arr.concat(restArr).join('')
};