代码随想录算法训练营第八天 | 344. 反转字符串 剑指 Offer 05. 替换空格 151. 反转字符串中的单词 剑指 Offer 58 - II. 左旋

110 阅读1分钟

344. 反转字符串

344. 反转字符串


/**
 * @param {character[]} s
 * @return {void} Do not return anything, modify s in-place instead.
 */
var reverseString = function(s) {
    let left = 0;
    let right = s.length - 1;

    while(left < right) {
        let tmp = s[left];
        s[left] = s[right];
        s[right] = tmp;

        left++;
        right--;
    }

    return s;
};

剑指 Offer 05. 替换空格

剑指 Offer 05. 替换空格

/**
 * @param {string} s
 * @return {string}
 */
var replaceSpace = function(s) {
    const arr = s.split('');
    for (let i = 0; i < arr.length; i++) {
        if (arr[i] === ' ') {
            arr[i] = '%20';
        }
    }

    return arr.join('');
};

151. 反转字符串中的单词

151. 反转字符串中的单词

/**
 * @param {string} s
 * @return {string}
 */
var reverseWords = function(s) {
    return s.trim().split(' ').filter(i => i !== '').map(i => { return i.trim(); }).reverse().join(' ')
};

剑指 Offer 58 - II. 左旋转字符串

剑指 Offer 58 - II. 左旋转字符串


/**
 * @param {string} s
 * @param {number} n
 * @return {string}
 */
var reverseLeftWords = function(s, n) {
    function reverse(left, right, arr) {
        while(left < right) {
            let tmp = arr[left];
            arr[left] = arr[right];
            arr[right] = tmp;
            left++;
            right--;
        }

        return arr;
    }

    const arr = s.split('');
    let s1 = reverse(0, n - 1, arr);
    let s2 = reverse(n, arr.length, s1);
    let res = reverse(0, arr.length, s2);

    return res.join('');
};