题目

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;
  }
};