js求解《初级算法》28. 找出字符串中第一个匹配项的下标
一、题目描述
给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 haystack 的一部分,则返回 -1 。
输入:haystack = "sadbutsad", needle = "sad"
输出:0
解释:"sad" 在下标 0 和 6 处匹配。
第一个匹配项的下标是 0 ,所以返回 0 。
二、思路
这道题用String的API只需要一行代码:indexOf(),我们来用slice()方法模拟indexOf()的功能,就是遍历整个待匹配项,在待匹配项haystack中选取匹配项needle开头的下标,在这个条件下,用slice()选取出来的字符串如果等同匹配项needle,就返回在haystack成功匹配的字符串第一个下标
三、代码展示
1. indexOf的直接使用
var strStr = function(haystack, needle) {return haystack.indexOf(needle);
};
2. slice方法模拟indexOf的功能
var strStr = function(haystack, needle) {if(needle.length===0) return 0;for(let i=0;i<haystack.length;i++){if(haystack[i]===needle[0]){if(haystack.slice(i,i+needle.length)===needle){return i;}}}return -1;
};
四、知识回顾
String方法
| 方法 | 描述 |
|---|---|
| indexOf() | 返回某个指定的字符串值在字符串中首次出现的位置。 |
| slice() | 提取字符串的片断,并在新的字符串中返回被提取的部分。 |
相关文章:
js求解《初级算法》28. 找出字符串中第一个匹配项的下标
一、题目描述 给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 haystack 的一部分,则返回 -1 。 输入:haystack "sadb…...
VAE--part1
Variational Auto-Encoder, VAE__part1分布变换VAE慢谈VAE 初现分布标准化重参数技巧VAE的本质是什么?VAE的本质结构正态分布?变分在哪里参考博客仅做学习记录,侵删分布变换 VAE和GAN都是生成式模型,它们俩的目标基本一致&#x…...
备战四级!!!
目录 一、替换词 二、作文常见句型 (1)常见开头 (2)阐述观点 (3)结束语 (4)提出建议 (5)表示论证 (6)给出原因 (…...
sizeof与strlen练习
前言 本篇仅仅是为了更加了解sizeof操作符和strlen函数练习. 对于多条sizeof操作符和strlen函数出现,可能很容易造成头脑不清晰,做题时容易混乱. 目录前言一维数组字符数组情况1:情况2情况3二维数组练习之前请牢记下面这段话.这将是头脑清晰地关键. 提示: sizeof(数组名)&#…...
知识图谱的介绍
知识图谱的由来 谷歌在2012年提出了知识图谱的概念,当时目的在于优化搜索引擎的返回结构,为用户提供更精确的结果。 知识图谱的定义 为了理解知识图谱,我们首先要明白信息与知识的概念。首先,信息表示的是外部的客观事实&#…...
【Redis】Redis高级客户端Lettuce详解
文章目录前提Lettuce简介连接Redis定制的连接URI语法基本使用API同步API异步API反应式API发布和订阅事务和批量命令执行Lua脚本执行高可用和分片普通主从模式哨兵模式集群模式动态命令和自定义命令高阶特性配置客户端资源使用连接池几个常见的渐进式删除例子在SpringBoot中使用…...
Qt——自定义界面之QStyle
1. Qt控件结构简介 首先我们要来讲讲GUI控件结构,这里以QComboBox为例: 一个完整的控件由一种或多种GUI元素构成: Complex Control Element。Primitive Element。Control Element。 1.1 Complex Control Element Complex control elements …...
指针和数组面试题(逐题分析,完善你可能遗漏的知识)
人生不是一种享乐,而是一桩十分沉重的工作。 —— 列夫托尔斯泰 前言:之前我们就学习了数组和指针的知识。 数组:数组就是能够存放一组相同类型的元素,数组的大小取决于数组的元素个数和元素类型。 指针:…...
centos7搭建nfs挂载日志目录完整步骤
NFS服务器配置 1.安装NFS服务 首先使用yum安装nfs服务: yum -y install rpcbind nfs-utils 2.创建共享目录 在服务器上创建共享目录,并设置权限。 mkdir /data/share/ chmod 755 -R /data/share/ 3.配置NFS nfs的配置文件是 /etc/exports &…...
三、JavaScript
目录 一、JavaScript和html代码的结合方式 二、javascript和java的区别 1、变量 2、运算 3、数组(重点) 4、函数 5、重载 6、隐形参数arguments 7、js中的自定义对象 三、js中的事件 四、DOM模型 五、正则表达式 一、JavaScript和html代码的结合方…...
深圳大学计软《面向对象的程序设计》实验11 多继承
A. 在职研究生(多重继承) 题目描述 1、建立如下的类继承结构: 1)定义一个人员类CPeople,其属性(保护类型)有:姓名、性别、年龄; 2)从CPeople类派生出学生类CStudent,…...
并发变成实战-原子变量与非阻塞同步机制
文章目录1.锁的劣势2.硬件对并发的支持2.1 比较并交换2.2 非阻塞的计数器3.原子变量类3.1 原子变量是一种“更好的volatile”3.2 性能比较:锁与原子变量4.非阻塞算法4.1 非阻塞的栈4.2 非阻塞的链表4.3 ABA问题非阻塞算法设计和实现上要复杂的多,但在可伸…...
sql数据库常用操作指令
一、操作库-- 创建库create database db1;-- 创建库是否存在,不存在则创建create database if not exists db1;-- 查看所有数据库show databases;-- 查看某个数据库的定义信息 show create database db1; -- 修改数据库字符信息alter database db1 character set ut…...
4-1 定时任务的示例10个
文章目录前言基本命令与格式示例前言 Linux crontab 是用来定期执行程序的命令。当安装完成操作系统之后,默认都已经安装,并启动此任务调度命令。 crond 命令每分钟会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。 基…...
外贸建站多少钱才能达到预期效果?
外贸建站多少钱才能达到预期效果?这是每个外贸企业都会问的问题。作为一个做外贸建站多年的人,我有一些个人的操盘感想。 首先,我认为外贸建站的投资是非常必要的。 因为在现代社会,网站已经成为外贸企业开展业务的必要工具之一…...
【Java学习笔记】5.Java 基本数据类型
Java 基本数据类型 变量就是申请内存来存储值。也就是说,当创建变量的时候,需要在内存中申请空间。 内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据。 因此,通过定义不同类型的变量…...
InnoDB 死锁和问题排查
文章目录死锁(dead lock)示例 1问题排查查看连接的线程查看相关的表查看最近一次的死锁信息查看服务器的锁信息查看正在使用的表如何尽可能地避免死锁死锁(dead lock) 两个及以上的事务各自持有对方需要的锁,导致双方…...
tensorflow07——使用tf.keras搭建神经网络(Sequential顺序神经网络)——六步法——鸢尾花数据集分类
使用tf.keras搭建顺序神经网络 六步法——鸢尾花数据集分类 01 导入相关包 02 导入数据集,打乱顺序 03 建立Sequential模型 04 编译——确定优化器,损失函数,评测指标(用哪一种准确率) 05 训练模型——把各项参入填入…...
关于Java连接Hive,Spark等服务的Kerberos工具类封装
关于Java连接Hive,Spark等服务的Kerberos工具类封装 idea连接服务器的hive等相关服务的kerberos认证注意事项 idea 本地配置,连接服务器;进行kerberos认证,连接hive、HDFS、Spark等服务注意事项: 本地idea连接Hadoo…...
大数据框架之Hadoop:MapReduce(五)Yarn资源调度器
Apache YARN (Yet Another Resource Negotiator) 是 hadoop 2.0 引入的集群资源管理系统。用户可以将各种服务框架部署在 YARN 上,由 YARN 进行统一地管理和资源分配。 简言之,Yarn是一个资源调度平台,负责为运算程序提供服务器运算资源&…...
Grafana Dashboard权限精细化控制实战指南
1. Grafana权限控制基础:从入门到精通 刚接触Grafana时,我一度以为权限管理就是简单的"管理员能改、编辑者能看、查看者只能瞅瞅"。直到有一次,客户要求"开发团队能修改A仪表盘但不能碰B仪表盘,运维团队能看B但不能…...
基于Proteus与51单片机的智能交通灯系统仿真设计
1. 智能交通灯系统设计概述 红绿灯控制系统是城市交通管理的基础设施,传统固定时长的红绿灯已经无法满足现代交通需求。使用51单片机和Proteus仿真软件搭建智能交通灯系统,不仅能帮助理解嵌入式系统开发流程,还能为实际硬件开发打下基础。这个…...
Z-Image-Turbo-rinaiqiao-huiyewunv 模型微调实战:使用自定义数据集训练专属风格
Z-Image-Turbo-rinaiqiao-huiyewunv 模型微调实战:使用自定义数据集训练专属风格 想不想让AI画出专属于你的独特风格?比如,你是一位插画师,希望AI能学会你笔下那种温暖治愈的线条;或者你经营一个品牌,需要…...
qmc-decoder:快速解锁QQ音乐加密文件的终极指南
qmc-decoder:快速解锁QQ音乐加密文件的终极指南 【免费下载链接】qmc-decoder Fastest & best convert qmc 2 mp3 | flac tools 项目地址: https://gitcode.com/gh_mirrors/qm/qmc-decoder 你是否曾经从QQ音乐下载了心爱的歌曲,却发现只能在特…...
ZLUDA技术破局:跨厂商GPU的CUDA生态兼容之道
ZLUDA技术破局:跨厂商GPU的CUDA生态兼容之道 【免费下载链接】ZLUDA CUDA on Intel GPUs 项目地址: https://gitcode.com/GitHub_Trending/zl/ZLUDA 作为开源兼容层领域的创新之作,ZLUDA正在重塑GPU计算生态格局。这款突破性工具通过专利的指令翻…...
AI“龙虾热”背后:机遇与挑战并存
2026年,代号OpenClaw的AI智能体“龙虾”迅速引爆全球。它不仅能对话问答,还能独立完成多项任务。众多厂商跟进推出对标产品,产业链全面扩张,但背后也存在诸多问题。热潮背后的三重驱动“龙虾热”表层是春节AI红包大战流量普及与大…...
SiameseUIE详细步骤:cd .. + cd nlp_structbert_siamese-uie_chinese-base执行逻辑
SiameseUIE详细步骤:cd .. cd nlp_structbert_siamese-uie_chinese-base执行逻辑 1. 为什么需要这个执行顺序 当你拿到一个已经部署好的AI模型镜像,第一件事就是找到正确的打开方式。cd .. 和 cd nlp_structbert_siamese-uie_chinese-base 这个看似简…...
RV1106平台下基于设备树的GPIO驱动开发实战
1. RV1106平台GPIO驱动开发入门指南 刚拿到RV1106开发板的时候,我最头疼的就是怎么控制那些GPIO引脚。作为嵌入式Linux开发者,GPIO控制可以说是最基础也最常用的功能。不同于单片机直接操作寄存器的方式,Linux系统下需要通过设备树和驱动框架…...
Z-Image Turbo提示词调试技巧:从失败案例反推有效表达逻辑
Z-Image Turbo提示词调试技巧:从失败案例反推有效表达逻辑 1. 为什么提示词调试如此重要 如果你用过AI绘画工具,一定遇到过这种情况:脑子里想的是赛博朋克少女,生成出来的却是模糊不清的怪异图像。这不是模型的问题,…...
SAM3优化指南:如何调节掩码精细度获得更好边缘效果
SAM3优化指南:如何调节掩码精细度获得更好边缘效果 1. 引言:为什么需要调节掩码精细度 在实际使用SAM3进行图像分割时,很多用户会遇到一个共同的问题:生成的物体边缘不够精细。比如分割一只猫时,毛发边缘显得生硬&am…...
