算法与实际工作的联系

157 阅读1分钟
// 0557-reverse-words-in-a-string-iii.js
// https://leetcode.com/problems/reverse-words-in-a-string-iii/description/
// Given a string, you need to reverse the order of characters in each word within a sentence while still preserving whitespace and initial word order.

// --
// T(n)
// S(1)

/**
 * @param {string} s
 * @return {string}
 */

// solution 1
var reverseWords = function(s) {
    let l = 0;
    s = s.split("");
    for (let i = 0; i <= s.length; i++) {
        if (i == s.length || s[i] === ' ') {
            helpReverse(s, l, i - 1);
            l = i + 1;
        }
    }
    return s.join("");
};

var helpReverse = function(s, l, r) {
    while (r - l >= 1) {
        let temp = s[l];
        s[l++] = s[r];
        s[r--] = temp;
    }
}

// solution 2
var reverseWords = function(s) {
    return s.split(" ").map(w => w.split("").reverse().join("")).join(" ");
};