【前端算法每日一题】leetcode-558-反转字符串中的单词III

84 阅读1分钟

题目描述

  • 给定一个字符串 s ,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。

解题思路

  • 通过当前字符是否为空字符来判断是否为一个单词的结尾
  • 需要注意的是最后一个单词需要单独处理

解题代码(JavaScript)

var reverseWords = function (s) {
  // 字符串长度
  let len = s.length;
  // 单词数组
  let word = [];
  // 字符串单词数组
  let wordArr = [];
  for (let i = 0; i < len; i++) {
    if (s[i] === " ") {
      // 当字符为空说明一个单词结尾
      // 将单词加入字符串单词数组
      wordArr.push(word.reverse().join(""));
      // 将单词数组置空
      word = [];
    } else {
      // 当字符不为空,说明是同一个单词
      // 将字符加入单词数组中
      word.push(s[i]);
    }
  }
  // 最后一个单词之后没有空字符(容易遗忘,导致少一个单词)
  if (wordArr) wordArr.push(word.reverse().join(""));
  return wordArr.join(" ");
};