当前位置: 首页 > news >正文

【JavaScript数据结构与算法】字符串类(计算二进制子串)

个人简介

👀个人主页: 前端杂货铺
🙋‍♂️学习方向: 主攻前端方向,也会涉及到服务端(Node.js)
📃个人状态: 在校大学生一枚,已拿多个前端 offer(秋招)
🚀未来打算: 为中国的工业软件事业效力 n 年
🥇推荐学习:🍍前端面试宝典 🍉Vue2 🍋Vue3 🍓Vue2/3项目实战 🥝Node.js🍒Three.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)) // 'sss'

Array.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
}

在这里插入图片描述


在这里插入图片描述


相关文章:

【JavaScript数据结构与算法】字符串类(计算二进制子串)

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;也会涉及到服务端&#xff08;Node.js&#xff09; &#x1f4c3;个人状态&#xff1a; 在校大学生一枚&#xff0c;已拿多个前端 offer&#xff08;…...

TCP连接不释放,应用产生大量CLOSE_WAIT状态TCP

一、起源 23年元旦期间&#xff0c;大家都沉浸在一片祥和的过节气氛当中。 “滴滴滴”&#xff0c;这头同事的电话响起&#xff0c;具体说些什么我也没太在意&#xff0c;但见同事接完电话之后展现出了一副懊恼夹杂着些许不耐烦的表情。 我不解问道&#xff1a;“怎么了&…...

Spring基础核心概念理解(常见面试题:什么是IoC?什么是DI?什么是Spring?)

目录 IoC 和 SpringIoC DI Spring IoC 和 SpringIoC IoC是控制反转的意思,它意味着控制权(依赖对象)的反转,将控制权进行反转,它是一种思想. 举个例子,理解一下什么是控制反转 现在有三个对象A,B,C. A的创建依赖于B,B的创建依赖于C,当我们想要创建A的时候创建B,同理也要…...

牛客小白月赛 D.遗迹探险 - DP

题目描述 小Z是一名探险家。有一天&#xff0c;小Z误入了一个魔法遗迹。以下是该遗迹的具体组成&#xff1a; 1. 在 x 轴和 y 轴构成的平面上&#xff0c;满足在 1≤x≤n&#xff0c;1≤y≤m 的区域中(坐标(x,y)表示平面上的第x行的第y列)&#xff0c;每个整数坐标 (x,y) 都有…...

前端架构师-week6-require源码解析

require 源码解析——彻底搞懂 npm 模块加载原理 require 的使用场景 加载模块类型 加载内置模块&#xff1a;require(fs)加载 node_modules 模块&#xff1a;require(ejs)加载本地模块&#xff1a;require(./utils)支持文件类型 加载 .js 文件加载 .mjs 文件加载 .json 文件…...

作为 IT 行业的过来人,你有什么话想对后辈说的?

作为 IT 行业的过来人&#xff0c;我想对后辈们说&#xff0c;要不断学习和探索新技术&#xff0c;但同时也要注意保持专注和耐心。在这个快速变化的时代&#xff0c;技术更新换代太快&#xff0c;可能会让人感到焦虑和无助&#xff0c;但只要有耐心并专注于自己所做的事情&…...

表数据编辑(数据库)

目录 一、插入数据 1&#xff0e;插入单个元组: INSERT…VALUES语句 2&#xff0e;插入子查询的结果: INSERT…SELECT语句 3&#xff0e;使用SELECT…INTO语句进行数据插入 二、修改数据 1、数据修改语句&#xff1a;UPDATE 2、修改给定表的所有行 3、基于给定表修改某…...

考虑多能负荷不确定性的区域综合能源系统鲁棒规划(Python代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

RocketMQ整理

RocketMQ在阿里云上的商业版本,集成了阿里内部一些更深层次的功能及运维定制。开源版本,功能上略有缺失,但大体上是一样的。 使用Java开发,便于深度定制。最早叫MetaQ。消息吞吐量虽然依然不如Kafka,但是却比RabbitMQ高很多。在阿里内部,RocketMQ集群每天处理的请求数超过…...

Springboot +Flowable,会签、或签简单使用(二)

一.简介 **会签&#xff1a;**在一个流程中的某一个 Task 上&#xff0c;这个 Task 需要多个用户审批&#xff0c;当多个用户全部审批通过&#xff0c;或者多个用户中的某几个用户审批通过&#xff0c;就算通过。 例如&#xff1a;之前的请假流程&#xff0c;假设这个请假流程…...

将核心交换机配置为NTP服务器

AR配置外源NTP 1&#xff0e;配置ntp <XQ-R1220>sys [XQ-R1220]ntp-service unicast-server 120.25.115.20 #阿里云ntp [XQ-R1220]ntp-service unicast-server 203.107.6.88 #阿里云ntp 2&#xff0e;查看ntp状态 <XQ-R1220>display ntp status clock sta…...

application.properties文件注释

这是一个常用的Spring Boot配置文件 在这里&#xff0c;我们可以配置应用程序的各种属性 服务器端口号 server.port8080 数据库配置 spring.datasource.urljdbc:mysql://localhost:3306/test spring.datasource.usernameroot spring.datasource.password123456 spring.datasou…...

MySql查询报错this is incompatible with sql_mode=only_full_group_by

错误示例 Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘yiliaohaocai_new.a.id’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_modeonly_full_group_by 原因 SQL …...

VMware Workstation 网络备忘 + 集群规模

概述 在虚拟机中部署服务&#xff0c;进行IP规划&#xff0c;进行相关的前期准备 3 张网卡 2个不同的网段 1个NAT 概述截图 NAT 截图 VMnet0 截图 VMnet1 截图 总结&#xff1a; 网卡&#xff08;网络适配器&#xff09;名称IP网段备注NATens33192.168.139.0VMnet0ens34VMne…...

被裁现状,给找工作的同学一些建议

2022 到 2023 国内知名互联网公司腾讯、阿里、百度、快手、滴滴、京东、阿里、爱奇艺、知乎、字节跳动、小米等公司均有裁员&#xff0c;其中有不少公司&#xff0c;在过去年的一整年&#xff0c;进行了多轮裁员&#xff0c;以下是网传的一张 “2022 年裁员企业名单”。 这些裁…...

编程到底难在哪里?

编程是一门非常有挑战性的技术&#xff0c;能够让人们使用计算机来完成各种任务。它不仅需要掌握各种计算机语言和框架&#xff0c;还需要在实际应用中充分发挥自己的专业知识和创造力。 然而&#xff0c;对于初学者来说&#xff0c;在编程过程中遇到的难点可能是多方面的。以…...

C++ 仿函数(一)

目录 一、仿函数是什么&#xff1f; 二、仿函数的特点 1.仿函数在使用时&#xff0c;可以像普通函数那样调用, 可以有参数&#xff0c;可以有返回值 2.仿函数超出普通函数的概念&#xff0c;可以有自己的状态 ​编辑3.仿函数可以作为参数传递。 三、谓词 一元谓词示例&a…...

MATLAB连续LTI系统的时域分析(十)

目录 1、实验目的&#xff1a; 2、实验内容&#xff1a; 1、实验目的&#xff1a; 1&#xff09;掌握利用MATLAB对系统进行时域分析的方法&#xff1b; 2&#xff09;掌握连续时间系统零输入响应的求解方法&#xff1b; 3&#xff09;掌握连续时间系统零状态响应、冲激响应和…...

HBuilderX使用

HBuilderX使用&#xff08;Vue前后端分离&#xff09; 概述&#xff1a;DCloud开发者后台 DAccount Service 1、官网下载开发工具&#xff1a;HBuilderX-高效极客技巧 注意&#xff1a;安装目录路径中不能出现中文特殊字符&#xff0c;否则会造成项目无法编译。比如C:/Progr…...

【JavaSE】多态(多态实现的条件 重写 向上转移和向下转型 向上转型 向下转型 多态的优缺点 避免在构造方法种调用重写的方法)

文章目录 多态多态实现的条件重写向上转移和向下转型向上转型向下转型 多态的优缺点避免在构造方法种调用重写的方法 多态 一种事物&#xff0c;多种形态。 多态的概念&#xff1a;去完成某个行为&#xff0c;当不同对象去完成时会产生出不同的状态。 多态实现的条件 1.必须…...

idea大量爆红问题解决

问题描述 在学习和工作中&#xff0c;idea是程序员不可缺少的一个工具&#xff0c;但是突然在有些时候就会出现大量爆红的问题&#xff0c;发现无法跳转&#xff0c;无论是关机重启或者是替换root都无法解决 就是如上所展示的问题&#xff0c;但是程序依然可以启动。 问题解决…...

docker详细操作--未完待续

docker介绍 docker官网: Docker&#xff1a;加速容器应用程序开发 harbor官网&#xff1a;Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台&#xff0c;用于将应用程序及其依赖项&#xff08;如库、运行时环…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来

一、破局&#xff1a;PCB行业的时代之问 在数字经济蓬勃发展的浪潮中&#xff0c;PCB&#xff08;印制电路板&#xff09;作为 “电子产品之母”&#xff0c;其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透&#xff0c;PCB行业面临着前所未有的挑战与机遇。产品迭代…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂

蛋白质结合剂&#xff08;如抗体、抑制肽&#xff09;在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上&#xff0c;高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术&#xff0c;但这类方法普遍面临资源消耗巨大、研发周期冗长…...

聊聊 Pulsar:Producer 源码解析

一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台&#xff0c;以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中&#xff0c;Producer&#xff08;生产者&#xff09; 是连接客户端应用与消息队列的第一步。生产者…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述&#xff1a;iview使用table 中type: "index",分页之后 &#xff0c;索引还是从1开始&#xff0c;试过绑定后台返回数据的id, 这种方法可行&#xff0c;就是后台返回数据的每个页面id都不完全是按照从1开始的升序&#xff0c;因此百度了下&#xff0c;找到了…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例

文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...

【Java_EE】Spring MVC

目录 Spring Web MVC ​编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 ​编辑参数重命名 RequestParam ​编辑​编辑传递集合 RequestParam 传递JSON数据 ​编辑RequestBody ​…...

Redis数据倾斜问题解决

Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中&#xff0c;部分节点存储的数据量或访问量远高于其他节点&#xff0c;导致这些节点负载过高&#xff0c;影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

AI书签管理工具开发全记录(十九):嵌入资源处理

1.前言 &#x1f4dd; 在上一篇文章中&#xff0c;我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源&#xff0c;方便后续将资源打包到一个可执行文件中。 2.embed介绍 &#x1f3af; Go 1.16 引入了革命性的 embed 包&#xff0c;彻底改变了静态资源管理的…...