1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| var reverseWords = function (s) { const strArr = Array.from(s); removeSpace(strArr); reverse(strArr, 0, strArr.length - 1);
let startIndex = 0; for (let i = 0; i <= strArr.length; i++) { if (strArr[i] === " " || i === strArr.length) { reverse(strArr, startIndex, i - 1); startIndex = i + 1; } } return strArr.join(""); };
var removeSpace = function (strArr) { let slowIndex = 0, fastIndex = 0; while (fastIndex < strArr.length) { if ( strArr[fastIndex] === " " && (fastIndex === 0 || strArr[fastIndex - 1] === " ") ) { fastIndex++; } else { strArr[slowIndex] = strArr[fastIndex]; slowIndex++; fastIndex++; } } if (strArr[slowIndex - 1] === " ") { strArr.length = slowIndex - 1; } else { strArr.length = slowIndex; } };
var reverse = function (strArr, start, end) { while (start < end) { [strArr[start], strArr[end]] = [strArr[end], strArr[start]]; start++; end--; } };
|