题目描述
- 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。
- 为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. ",则输出"student. a am I"。
解体思路
- 因为句子开头,中间,结尾都会出现空格,而且空格个数未知
- 所以遍历字符串的时候每次遇到空格就判断单词word是否有值,有的话前插入数组
- 没遇到空格的话,拼接单词word
- 结束遍历后,判断单词word是否有值,有的话前插入数组
(这个容易被忽略)进行这个操作是因为字符串结尾若没有空格的话,最后一个单词没有插入到数组中
解题代码(JavaScript)
var reverseWords = function (s) {
let word = "";
let wordArr = [];
for (let i = 0; i < s.length; i++) {
if (s[i] === " ") {
if (word) wordArr.unshift(word);
word = "";
} else {
word += s[i];
}
}
if (word) wordArr.unshift(word);
return wordArr.join(" ");
};
更简洁的解题代码(JavaScript)
var reverseWords = function (s) {
return s
.trim()
.split(" ")
.filter((item) => item.trim())
.reverse()
.join(" ");
};