h5网站建设作用,湖南高端建设网站,店铺网站怎么建,南宁建站官网个人简介 #x1f440;个人主页#xff1a; 前端杂货铺 #x1f64b;♂️学习方向#xff1a; 主攻前端方向#xff0c;也会涉及到服务端#xff08;Node.js#xff09; #x1f4c3;个人状态#xff1a; 在校大学生一枚#xff0c;已拿多个前端 offer#xff08;…个人简介 个人主页 前端杂货铺 ♂️学习方向 主攻前端方向也会涉及到服务端Node.js 个人状态 在校大学生一枚已拿多个前端 offer秋招 未来打算 为中国的工业软件事业效力 n 年 推荐学习前端面试宝典 Vue2 Vue3 Vue2/3项目实战 Node.jsThree.js JS版算法 个人推广每篇文章最下方都有加入方式旨在交流学习资源分享快加入进来吧 【JavaScript版算法】系列文章目录
内容参考链接JavaScript 数据结构与算法总目录JavaScript 数据结构与算法字符串类反转字符串中的单词 文章目录 【JavaScript版算法】系列文章目录题目计算二进制子串知识点汇总测试用例题目解法 题目计算二进制子串 知识点汇总
String.prototype.slice slice() 方法可提取字符串的某个部分并以新的字符串返回被提取的部分。 let name [zahuopu, 2023, qianduan, lucky]
console.log(name.slice(1,3)) // [2023, qianduan]String.prototype.match match() 方法可在字符串内检索指定的值或找到一个或多个正则表达式的匹配。 let str The rain in SPAIN stays mainly in the plain;
console.log(str.match(/ain/g)) // [ain, ain, ain]String.prototype.repeat repeat() 方法字符串复制指定次数。 let string s
console.log(string.repeat(3)) // sssArray.prototype.push push() 方法可向数组的末尾添加一个或多个元素并返回新的长度。 let arr []
arr.push(前端杂货铺)
console.log(arr) // [前端杂货铺]RegExp 正则表达式对象用于对字符串模式匹配及检索替换是对字符串执行模式匹配的强大工具。 测试用例
我们使用题目中的测试用例进行测试
// 引入编码的相对路径
import subStr from ../../code/string/lesson2// 第一个测试用例 测试用例test..expect..toEqual为固定写法
test(subStr(00110011), () {expect(subStr(00110011)).toEqual([0011, 01, 1100, 10, 0011, 01])
})
// 第二个测试用例
test(subStr(10101), () {expect(subStr(10101)).toEqual([10, 01, 10, 01])
})题目解法
export default (str) {// 建立数据结构堆栈保存数据let r []// 给定任意子输入都返回第一个符合条件的子串let match (str) {// 首先匹配连续的 0 | 1let j str.match(/^(0|1)/)[0]// o 和 j 取反且长度相等题目要求let o (j[0] ^ 1).toString().repeat(j.length)// 创建正则对象使用模板字符串拼接 j 和 olet 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
}