题目
https://leetcode.com/problems/reverse-words-in-a-string/
题解
- 正则+高阶函数
javascript
var reverseWords = function(s) {
return s.split(/[\s]+/).filter(e=>e!="").reverse().join(" ")
};
- 迭代+双指针(时间O(n) 空间O(n) ):从右边往左确定每一个单词,放入结果
javascript
var reverseWords = function(s) {
let answer = [];
// i 指向单词首字符,j指向单词尾部下一个字符或者s串尾
for( let i = s.length-1 , j = s.length; i >= 0; i--){
if(s[i] == ' '){ // 发现新单词的尾部
j = i
}else if(i==0 || s[i-1] == ' '){// 发现新单词的首部
answer.push(s.substring(i,j)) // 收集单词
}
}
return answer.join(' ')// 使用单一空格连接成结果返回
};