leetcode 28. Find the Index of the First Occurrence in a String(找到字符串第一次出现的下标)

LeetCode每日一题(28. Find the Index of the First Occurrence in a String) 用 Rabin-Karp 算法。 阅读详情

在这里插入图片描述

两个字符串haystack和needle, 返回needle第一次出现在haystack中的下标,
如果needle不是haystack的一部分,返回-1.

思路:

可以把问题 needle是不是haystack的一部分 转换为 needle和haystack的substring是否相等。

一般比较两个字符串是否相等,会先比较长度。

如果needle的长度 > haystack的长度,那必然不是它的一部分,直接返回-1.
如果长度相等,只需比较两字符串是否相等即可。

剩下的只需要解决needle长度 < haystack长度,
那就好办了,遍历haystack的下标 i, 每次取substring(i , i + needle长度) 和 needle比较,看是否相等,
一旦相等,返回 i.
i 只需要遍历到haystack长度 - needle长度即可。

    public int strStr(String haystack, String needle) {
        int hlen = haystack.length();
        int nlen = needle.length();

        if(nlen > hlen) return -1;
        if(hlen == nlen) {
            if(haystack.equals(needle)) return 0;
            else return -1;
        }
        
        for(int i = 0; i <= hlen-nlen; i++) {

            if(haystack.charAt(i) == needle.charAt(0) &&
                haystack.substring(i,i+nlen).equals(needle)) 
                return i;
            
        }
        return -1;
    }
3.【刷爆LeetCode】找出字符串中第一个只出现一次的字符(多方法、多思路) 【刷爆LeetCode】找出字符串中第一个只出现一次的字符(多方法、多思路),与博主一起爆刷LeetCode吧! 阅读详情

相关推荐

JSON(详解)

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它以易于阅读和编写的文本格式来存储和表示数据,通常用于在不同的系统之间进行数据交换。JSON数据以键-值对的形式组织,可以包含对象、数组、字符串、数字等基本数据类型。它经常在Web开发、API通信等领域被广泛使用。

7702

28. Find the Index of the First Occurrence in a String

为什么要这样用——KMP算法。2.Next数组怎么求。

2301_80161204的博客 395

三菱CNC数据采集实战:从SDK安装到C#代码调试全流程(附完整资源包)

本文为C#开发者提供了三菱CNC数据采集的完整实战指南。详细介绍了从获取并安装核心A2协议SDK、配置Visual Studio开发环境,到理解COM接口文档、封装C#通信类,并构建具备多设备连接与定时采集功能的WinForms应用程序的全流程。文章重点分享了网络调试、异常处理及性能优化等关键实战经验,帮助开发者高效打通工业自动化数据采集链路。

oauth7security的博客 707

Leetcode——实现 strStr() (找出字符串出现的第一个位置)

1. 题目 实现 strStr() 函数。 给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回 -1 。 说明: 当 needle 是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。 对于本题而言,当 needle 是空字符串时我们应当返回 0 。这与 C 语言的 strstr() 以及 Java 的 indexOf() 定义相符。 示例 1: 输入:haystack =

Yawn 475

手把手教你用OPA运放和MOS管搭建恒流源电路(附完整电路图)

本文详细介绍了如何使用OPA运放和MOS管搭建高精度恒流源电路,涵盖核心元器件选型、电路设计、工作原理及实际搭建步骤。通过负反馈控制机制和MOS管工作区设置技巧,实现稳定的电流输出,适用于LED驱动、电池充电等场景。附完整电路图和调试技巧,助您快速掌握恒流源设计。

weixin_29239279的博客 534

陀螺仪选型避坑指南:为什么IMU660RA是智能车竞赛的性价比之选?

本文针对智能车竞赛场景,提供陀螺仪选型避坑指南,并深度解析为何IMU660RA成为性价比之选。文章指出,竞赛选型应避免盲目追求高性能“黑盒”模块,而应注重原始数据获取与算法开发。IMU660RA以其良好的常温稳定性、适中的噪声水平、极致的性价比和丰富的生态支持,成为帮助参赛者深入理解姿态解算原理、进行“白盒开发”的理想教学与实践平台。

tech5的博客 879

28. Find the Index of the First Occurrence in a string

Given two strings and , return the index of the first occurrence of in , or -1 if is not part of .Example 1:Input: = “sadbutsad”, = “sad” Output: 0 Explanation: “sad” occurs at index 0 and 6. The first occurrence is at index 0, so we return 0.Example

SUNNY的博客 509

STC32-USB-CAN:基于STC32G的国产双通道隔离CAN分析调试设备设计与实战

本文详细介绍了基于国产STC32G单片机设计双通道隔离CAN分析调试设备的全过程。该设备实现了双通道隔离CAN数据监控、中继转发及USB高速通信,并支持故障注入测试。核心采用全国产器件,通过实战测试验证了其在1Mbps波特率下长时间稳定工作的可靠性,为工程师提供了高性价比的CAN总线调试解决方案。

weixin_42465140的博客 97

闯关leetcode——28. Find the Index of the First Occurrence in a String

leetcode第28题

方亮的专栏 969

ESP32-S3打造离线语音助手:从零部署自定义唤醒词与本地大模型推理【实战指南】

本文详细介绍了如何利用ESP32-S3芯片打造离线语音助手,包括自定义唤醒词训练与本地大模型推理的实战指南。通过硬件架构解析、音频处理优化及性能调优技巧,实现低延迟、高隐私保护的语音交互方案,特别适合智能家居和物联网应用。

weixin_30296405的博客 603

cesium 实现经纬线绘制和经纬度标注

废话不对数直接上线效果图及代码 1.效果图 2.实现代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width,initial-scale=

一碗老面的博客 2569

【Leetcode】28. Find the Index of the First Occurrence in a String

未改进版本的KMP中,这个下标取的是最长的相等前后缀的长度,利用这个信息去移动。比较时,之前的字符已经全部相等,也就是不用再进行匹配了;相等,那么肯定会出错,还是得继续向后移,改进的KMP算法就是将这个信息加入进去。,那再次对齐就没有意义,因为还要取一次next。的长度的子串的哈希值,与之比较,一旦比较相等则返回匹配起始位置。的子串,如果是则返回匹配的起始下标,否则返回。中最长的相等前后缀的长度,而在改进版本中,,可以在不错过可能解的情况下,保证移动后和。,在未改进版本的KMP中,,若还不等,则对齐的是。

数学、算法爱好者的博客 303

【报错解决】彻底解决 MySQL 登录报错 ERROR 1045 (28000)

MySQL 报错 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) 通常是由于用户名或密码错误、权限不足、服务未启动或配置文件异常导致的。通过检查并确认密码、重置 root 用户密码、授予完整权限、校验配置文件以及确保 MySQL 服务正常运行,可以彻底解决该问题。掌握这一流程不仅能够恢复 root 登录,还能保障数据库的安全性与稳定性。

博客 1748

Day 9 | 28. Find the Index of the First Occurrence in a String | 459. Repeated Substring Pattern

Day 9 | 28. Find the Index of the First Occurrence in a String | 459. Repeated Substring Pattern

KKKKKKyle的博客 1177

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

LeetCode //28. Find the Index of the First Occurrence in a String

【代码】LeetCode //28. Find the Index of the First Occurrence in a String。

Made in Code 229

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

leetcode 28 Find the Index of the First Occurrence in a String

【代码】leetcode 28 Find the Index of the First Occurrence in a String。

weixin_41554427的博客 257

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

LeetCodeDAY8(28. Find the Index of the First Occurrence in a String&459. Repeated Substring Pattern)

【代码】LeetCode(28. Find the Index of the First Occurrence in a String&459. Repeated Substring Pattern)

weixin_48078699的博客 329

0028. Find the Index of the First Occurrence in a string (leetcode in python day7)

0028. Find the Index of the First Occurrence in a string

weixin_45847849的博客 327

LeetCode | 28. Find the Index of the First Occurrence in a String, 459. Repeated Substring Pattern

Link: https://leetcode.com/problems/find-the-index-of-the-first-occurrence-in-a-string/Given two strings and , return the index of the first occurrence of in , or if is not part of .Link: https://programmercarl.com/0028.%E5%AE%9E%E7%8E%B0strStr.html 45

weixin_43615320的博客 122

Day9. 151. Reverse Words in a String, 28. Find the Index of the First Occurrence in a String, 459. R

做题情况:没做出来。答案的方法很巧妙,把字符串重复两次,然后去掉首尾字母,如果字符串是由重复的组合组成的,那么首位相连的地方还能找到一次原来的字符串。做题情况:要先将字符串转化成列表再进行双指针的操作。做题情况:KMP算法的做法不会,写了暴力的方法。题目难度:Medium。

2401_83154344的博客 347

First Unique Character in a String

From LeetCode No.387; Tier:Easy Content: Given a string, find the first non-repeating character in it and return it’s index. If it doesn’t exist, return -1. Examples: s = “leetcode” return 0. s = “...

sinat_38486956的博客 164

LeetCode-First_Unique_Character_in_a_String

题目:Given a string, find the first non-repeating character in it and return it's index. If it doesn't exist, return -1.Examples:s = "leetcode" return 0. s = "loveleetcode", return 2.翻译:给定一个字符串,找到其中第一个...

TanX的博客 213

DAY9 Leetcode28实现 strStr()+459重复的子字符串

步骤一:因为 这是相等的前缀和后缀,t[0] 与 k[0]相同, t[1] 与 k[1]相同,所以 s[0] 一定和 s[2]相同,s[1] 一定和 s[3]相同,即:,s[0]s[1]与s[2]s[3]相同。步骤三: 因为 这是相等的前缀和后缀,t[2] 与 k[2]相同 ,t[3]与k[3] 相同,所以,s[2]一定和s[4]相同,s[3]一定和s[5]相同,即:s[2]s[3] 与 s[4]s[5]相同。如果 s[i] 与 s[j+1]不相同,也就是遇到 前后缀末尾不相同的情况,就要向前回退。

fuxxu的博客 72

力扣的板子

【代码】力扣的板子。

qq_41799012的博客 1819

LeetCode题解记录-hot100(1-20)

记录刷题过程。没有什么系统方法,全凭自己感觉。看了他人的题解。有的会有python,由于不是很熟python,所以会写一些基础知识点。

随缘不强求,反正也求不来 1149

刷题第九天 | 28. 实现 strStr()、字符串总结、双指针回顾

28. 实现 strStr() 字符串总结 双指针回顾

xuzhikai725的博客 167
上一篇: cv2.addWeighted 操作 np.array 踩坑记录
下一篇: leetcode 1539. Kth Missing Positive Number(第k个丢失的正数)
蓝羽飞鸟
博客等级 码龄8年 1万+粉丝 727原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝羽飞鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值