博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript 数据结构与算法 这题你会吗?
阅读量:6579 次
发布时间:2019-06-24

本文共 1140 字,大约阅读时间需要 3 分钟。

LeetCode 第557题

557. 反转字符串中的单词 III

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

示例 1:

输入: "Let's take LeetCode contest"
输出: "s'teL ekat edoCteeL tsetnoc"
注意:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。

1.常规思路 通过split(' ')将每个单词分开 然后将每个单词翻转后 用join(' ')合并成一个方法
let reverseWords = (s) => {  return s    .split(' ')    .map(item => {      return item        .split('')        .reverse()        .join('')    }).join(' ')};复制代码

当然split可以配合正则,split(' ')可以替换为split(/\s/g)

2.最快的范例 这种思路其实和上面这种 没什么差别
var reverseWords = function (s) {  // "Let's take LeetCode contest"  // -> tsetnoc edoCteeL ekat s'teL  直接翻转  // -> "s'teL ekat edoCteeL tsetnoc" 然后通过' '切割后再翻转 不需要循环  return s.split('').reverse().join('').split(' ').reverse().join(' ')}复制代码
2.比较不同的思路
let reverseWords = (s) => {  let str = ''//存出结果  let begin = 0//单词开始的位置   for (let i = 0; i < s.length; i++) {    if (s[i] === ' ') {      //当遇到' ' ,将前面的单词进行翻转      for (let j = i - 1; j >= begin; j--) {        str += s[j]      }      str += ' ' //增加间隔      begin = i + 1  //更新单词开始的位置    }  }  // 将最后一个单词 翻转  for (let n = s.length - 1; n >= begin; n--) {    str += s[n]  }  return str}复制代码

如果喜欢或者想要更多的信息,,欢迎star

转载地址:http://oabno.baihongyu.com/

你可能感兴趣的文章
H3C设备之OSPF DR选举
查看>>
View控件Edittext属性
查看>>
List grantee right in oracle
查看>>
骨牌铺方格 ——解题报告
查看>>
Activity生命周期
查看>>
通过VBS编写自动输入账号和密码、自动登录程序的脚本
查看>>
MTK APSoC SDK MT7621编译固件的快速开始
查看>>
深度解析Istio系列之安全模块篇
查看>>
Linux 系统 审计
查看>>
JS -------------------设置弹出框位置屏幕的中间
查看>>
性能测试 vbs使用(一)
查看>>
1.2 linux哲学思想
查看>>
jQuery基础
查看>>
BZOJ5312:冒险——题解
查看>>
什么是标的
查看>>
echarts,两点连线,中间断裂
查看>>
samba简易配置
查看>>
庆祝在CNBlogs开博!
查看>>
javascript reverse string
查看>>
南阳oj 题目6 喷水装置(一)
查看>>