--算法恩仇录--实战篇--力扣(LeetCode)--557-反转字符串中的单词--
1.这是道简单题,之所以记录的原因是其使用链式编程完成字符串的反转。
代码如下:
/** * @param {string} s * @return {string} */ var reverseWords = function(s) { let str='', tmp=''; for(let i = 0; i < s.length;i++){ if(s[i] === ' '){ str += tmp.split('').reverse().join(''); //console.log('TEMP: ' + tmp.split('').reverse().join('')); tmp = ''; if(i !==s.length-1){ str += ' '; } } else { tmp += s[i]; if(i ===s.length-1){ str += tmp.split('').reverse().join(''); } } } return str; }; const str = "Let's take LeetCode contest" console.log(reverseWords(str));
使用以上JavaScript代码结果如下~
执行用时:144 ms, 在所有 JavaScript 提交中击败了6.02%的用户
内存消耗:45.2 MB, 在所有 JavaScript 提交中击败了14.70%的用户
2.不使用链式编程,如下~
/** * @param {string} s * @return {string} */ var getAnotherStr = function(s){ let str=''; for(let i = s.length-1;i>=0;i--){ str += s[i]; } return str; } var reverseWords = function(s) { let str='', tmp=''; for(let i = 0; i < s.length;i++){ if(s[i] === ' '){ str += getAnotherStr(tmp); //console.log('TEMP: ' + tmp.split('').reverse().join('')); tmp = ''; if(i !==s.length-1){ str += ' '; } } else { tmp += s[i]; if(i ===s.length-1){ str += getAnotherStr(tmp); } } } return str; };
以上JavaScript代码结果如下:
执行用时:112 ms, 在所有 JavaScript 提交中击败了14.90%的用户
内存消耗:43.9 MB, 在所有 JavaScript 提交中击败了98.92%的用户
3.以上两种办法感觉时间开销都比较大,都有重复遍历的时间损耗。能不能遍历一次就能实现反转?
于是有了以下代码:
/** * @param {string} s * @return {string} */ var reverseWords = function(s) { let str='', tmp=''; for(let i = s.length-1; i >=0;i--){ if(s[i] !== ' '){ tmp += s[i]; if(i ===0){ str = tmp + str; } } else { str = ' '+ tmp +str; tmp = ''; } } return str; };
结果:
执行用时:88 ms, 在所有 JavaScript 提交中击败了69.34%的用户
内存消耗:44.7 MB, 在所有 JavaScript 提交中击败了33.69%的用户
4.emmmm,在网上查找了其他大佬的写法,发现自己吃亏在正则表达式上【/吐血】,看来是时候恶补一波正则了!
代码如下:
/** * @param {string} s * @return {string} */ var reverseWords = function(s) { var result = s.split(/\s/g).map(item=>{ return item.split('').reverse().join('') }).join(' '); return result }; const str = "Let's take LeetCode contest" console.log(reverseWords(str));
结果为:
执行用时:92 ms, 在所有 JavaScript 提交中击败了58.70%的用户
内存消耗:44.4 MB, 在所有 JavaScript 提交中击败了76.35%的用户
(时间比我慢一丢丢,哈哈~不过综合空间消耗来看,比我好很多~得继续学习呀~)
更多方法尝试中~~
离大侠再近一步!