这一题也是比较简单,swap单词即可,但是根据题目的要求,在给定的测试用例里面会出现首尾都有空格的情况,然后中间也会出现多个空格相连的情况,所以用split(' ')是不行的
错误代码
var reverseWords = function (s) {
let strs = s.split(' ')
var swap = function (strs) {
let i = 0
let j = strs.length - 1
while (i < j) {
[strs[i], strs[j]] = [strs[j], strs[i]]
i++
j--
}
}
swap(strs)
return strs.join(' ')
};
未通过的测试用例
正确代码
需要去除首尾空格,使用trim来实现,然后去除中间过多的空格,用正则表达来实现
var reverseWords = function (s) {
let strs = s.trim().split(/\s+/)
return strs.reverse().join(' ')
};
记录单词,reverse
var reverseWords = function (s) {
let start = 0,
end = 0,
i = 0;
let arr = [];
while (i < s.length) {
while (i < s.length && s[i] === " ") i++;
if(i >= s.length) break // 防止最后的空格被记录
start = i;
while (i < s.length && s[i] !== " ") i++;
end = i;
arr.push(s.slice(start, end));
i++;
}
return arr.reverse().join(" ");
};