内容简介:主要就是用到了数组的思路:使用一个
给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。 示例 1: 输入: "Let's take LeetCode contest" 输出: "s'teL ekat edoCteeL tsetnoc" 注意:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。
主要就是用到了数组的 split
、 reverse
、 join
、 map
方法,原理:就是把字符串变成数组,再利用数组自带的反转方法,最后再变成字符串返回。
export default (str) => { // 1.先将字符串转为数组 let arr = str.split(' ') // 2.遍历数组,反转数组中的每一项 let result = arr.map(item => { return item.split('').reverse().join('') }) // 3.把新生成的数组转成字符串,用空格分开,返回结果 return result.join(' ') } // 合并写法 export default (str) => { return s.split(/\s/g).map(item => { return item.split('').reverse().join('') }).join(' ') }
计数二进制子串
给定一个字符串 s,计算具有相同数量0和1的非空(连续)子字符串的数量,并且这些子字符串中的所有0和所有1都是组合在一起的。 重复出现的子串要计算它们出现的次数。 示例 1 : 输入: "00110011" 输出: 6 解释: 有6个子串具有相同数量的连续1和0:“0011”,“01”,“1100”,“10”,“0011” 和 “01”。 请注意,一些重复出现的子串要计算它们出现的次数。 另外,“00110011”不是有效的子串,因为所有的0(和1)没有组合在一起。 示例 2 : 输入: "10101" 输出: 4 解释: 有4个子串:“10”,“01”,“10”,“01”,它们具有相同数量的连续1和0。 注意: - s.length 在1到50,000之间。 - s 只包含“0”或“1”字符。
思路:使用一个 for
循环,将字符串从第一个开始传入 match
函数中,在 match
函数中利用正则表达式获取到字符串开头的字符(或是多个0或是多个1),再使用 repeat
方法,将开头获取到的多个0或1利用异或运算反转重复相同次数(举个例子:获取到了 ‘00’
,那么反转之后就是 ‘11’
),然后再建立一个正则表达式,将获取到的字符和反转后的字符拼接,使用test方法与传入的字符串进行比对,返回第一个比对成功的字符串,保存到数组 r
中。以此类推,剃掉原字符串的第一个字符后再调用一次 match
方法,直到原字符串只剩下1个字符,返回数组 r
的长度,即为题解。
export default (str) => { // 建立数据结构,堆栈,保存数据 let r = [] // 给定任意子输入都返回第一个符合条件的子串 let match = (str) => { // 使用正则表达式获取字符串开头的字符 let j = str.match(/^(0+|1+)/)[0] // 利用“异或”运算将字符反转并复制相同个数 let o = (j[0] ^ 1).toString().repeat(j.length) // 合并上面两个字符串,创建正则表达式 let reg = new RegExp(`^(${j}${o})`) // 与传入的字符串进行比对,返回第一个比对成功的子串 if (reg.test(str)) { return RegExp.$1 } else { return '' } } // 通过for循环控制程序运行的流程 for (let i = 0, len = str.length - 1; i < len; i++) { let sub = match(str.slice(i)) if (sub) { r.push(sub) } } return r.length }
最后
创建了一个前端学习交流群,感兴趣的朋友,一起来嗨呀!
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 算法与数据结构之递归算法
- Python 数据结构与算法 —— 初识算法
- js实现数据结构及算法之排序算法
- 数据结构和算法面试题系列—递归算法总结
- 数据结构和算法面试题系列—随机算法总结
- 数据结构与算法——常用排序算法及其Java实现
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Base64 编码/解码
Base64 编码/解码
UNIX 时间戳转换
UNIX 时间戳转换