题目
Given an input string, reverse the string word by word.
For example,
Given s = "the sky is blue",
return "blue is sky the".
大致意思
给你一个字符串,把里面的单词,倒序输出出来。
解决方案
- 依次遍历整个string
var reverseWords = function(str) {
for (var i in str) {
var s = str[i];
}
};
- 遇到空格
- 如果string不存在,则把word 赋给 string。这种是刚开始的情况
- 如果string存在,并且word不等于空字符串,这个时候把word和string以空格进行拼接
- 最后将word赋值为空字符串
if (s === ' ') {
if (!string.length) {
string = word;
} else if (word.length) {
string = word + s + string;
}
word = '';
}
- 如果不是空格,进行字符的拼接
if (s === ' ') {
...
} else {
word += s;
}
- 最后输出的时候
- 如果输入的字符是
a
的情况,string
不存在,word = a
,所以直接return word
a b
,那这个时候word
存在,string
也存在,但是在最后的循环的时候是没有进行拼接,所以需要手动再拼接一次a
这种情况的话,直接return string
- 如果输入的字符是
源代码
var reverseWords = function(str) {
var string = '';
var word = '';
for (var i in str) {
var s = str[i];
if (s === ' ') {
if (!string.length) {
string = word;
} else if (word.length) {
string = word + s + string;
}
word = '';
} else {
word += s;
}
}
if (!string.length) {
return word;
} else if (string.length && word.length) {
return `${word} ${string}`
} else if (string.length && !word.length) {
return string;
}
};