JS算法-反转字符串中的单词

简介: JS算法-反转字符串中的单词

题目


给你一个字符串 s ,请你反转字符串中 单词 的顺序

输入: s = "the sky is blue"
输出: "blue is sky the"


题解


第一种


我们这里先定义一个常量 SPACE,表示空格符号,然后在定义两个数组变量,ret 和 word,分别用于保存颠倒单词顺序后的字符串和当前单词的字符数组,在将输入的字符串 s 后面加上一个空格符号,我们为了方便处理最后一个单词,接下来进行循环遍历字符串 s 中的每个字符,如果当前字符是空格符号,表示一个单词结束,将当前单词字符数组转换为字符串并插入到 ret 数组的开头,同时清空 word 数组;如果当前字符不是空格符号,将其加入到 word 数组中,最后将 ret 数组中的所有单词按照空格符号拼接成一个字符串并返回

var reverseWords = function (s) {
  const SPACE = ' ';
  let ret = [],
    word = [];
  s += SPACE;
  for (let i = 0; i < s.length; i++) {
    const char = s[i];
    if (char === SPACE) {
      if (i !== 0 && s[i - 1] !== SPACE) {
        ret.unshift(word.join(''));
        word = [];
      } else {
        continue;
      }
    } else {
      word.push(char);
    }
  }
  return ret.join(SPACE);
};


第二种


函数接受一个字符串 s 作为参数,并返回翻转后的字符串。 首先,在函数内部声明了一个变量 result,用于存储翻转后的字符串。 然后,使用一个 while 循环遍历字符串 s,循环的条件是 i < s.length,即遍历到字符串末尾。 在循环中,首先判断当前字符是否为空格,如果不是空格,则进入内层的 while 循环。 内层循环的条件是 j <= s.length,即遍历到字符串末尾或者空格。在内层循环中,首先判断当前字符是否为空格,如果是空格或者已经遍历到字符串末尾,则将从 i 到 j 的子字符串取出来,作为一个单词。 然后,判断 result 是否为空,如果为空,则将当前单词直接赋值给 result;如果不为空,则将当前单词和 result 拼接起来,并加上一个空格。 接着,将 i 的值更新为 j,继续循环遍历字符串。 最后,返回翻转后的字符串 result

var reverseWords = function (s) {
  let result = '';
  let i = 0;
  while (i < s.length) {
    if (s[i] !== ' ') {
      let j = i;
      while (j <= s.length) {
        if (!s[j] || s[j] === ' ') {
          let word = s.slice(i, j);
          if (!result) {
            result += word;
          } else {
            result = `${word} ${result}`;
          }
          i = j;
          break;
        }
        j += 1;
      }
    }
    i += 1;
  }
  return result;
};
相关文章
|
2月前
|
JavaScript 前端开发
JS几种拼接字符串的方法
JS几种拼接字符串的方法
56 1
|
3月前
|
JavaScript
js 解析 byte数组 成字符串
js 解析 byte数组 成字符串
93 5
|
1月前
|
JavaScript 前端开发 数据处理
模板字符串和普通字符串在浏览器和 Node.js 中的性能表现是否一致?
综上所述,模板字符串和普通字符串在浏览器和 Node.js 中的性能表现既有相似之处,也有不同之处。在实际应用中,需要根据具体的场景和性能需求来选择使用哪种字符串处理方式,以达到最佳的性能和开发效率。
|
1月前
|
JavaScript 前端开发 索引
JavaScript学习第二章--字符串
本文介绍了JavaScript中的字符串处理,包括普通字符串和模板字符串的使用方法及常见字符串操作方法如`charAt`、`concat`、`endsWith`等,适合前端学习者参考。作者是一位热爱前端技术的大一学生,专注于分享实用的编程技巧。
26 2
|
2月前
|
算法
两个字符串匹配出最长公共子序列算法
本文介绍了最长公共子序列(LCS)问题的算法实现,通过动态规划方法求解两个字符串的最长公共子序列,并提供了具体的编程实现细节和示例。
97 1
两个字符串匹配出最长公共子序列算法
|
3月前
|
算法 JavaScript 前端开发
第一个算法项目 | JS实现并查集迷宫算法Demo学习
本文是关于使用JavaScript实现并查集迷宫算法的中国象棋demo的学习记录,包括项目运行方法、知识点梳理、代码赏析以及相关CSS样式表文件的介绍。
第一个算法项目 | JS实现并查集迷宫算法Demo学习
|
2月前
|
存储 JavaScript 前端开发
JavaScript 字符串(String) 对象
JavaScript 字符串(String) 对象
49 3
|
3月前
|
JavaScript 前端开发
javascript创建字符串
javascript创建字符串
|
3月前
|
JavaScript 前端开发
如何在JavaScript中替换字符串:一篇详细指南
如何在JavaScript中替换字符串:一篇详细指南
|
3月前
|
存储 JavaScript
js切割截取字符串方法
js切割截取字符串方法
61 2