首页 > 其他分享 >28. 找出字符串中第一个匹配项的下标

28. 找出字符串中第一个匹配项的下标

时间:2025-01-16 20:32:17浏览次数:1  
标签:下标 int needle 28 next ++ 字符串 haystack size

题目

KMP典中典,可惜我不会。

卡哥思路里的讲解也似懂非懂,跟着卡哥代码敲了一遍

class Solution {
public:
    void getNext(int *next, const string &s)
    {
        int j = -1;
        next[0] = j;
        for (int i = 1; i < s.size(); ++i)
        {
            while (j >= 0 && s[i] != s[j + 1])
                j = next[j];
            if (s[i] == s[j + 1])
                j++;
            next[i] = j;
        }
    }

    int strStr(string haystack, string needle) {
        if (needle.size() == 0)
            return 0;
        vector<int> next(needle.size());
        getNext(&next[0], needle);
        int j = -1;
        for (int i = 0; i < haystack.size(); ++i)
        {
            while (j >= 0 && haystack[i] != needle[j + 1])
                j = next[j];
            if (haystack[i] == needle[j + 1])
                j++;
            if (j == (needle.size() - 1))
                return (i - needle.size() + 1);
        }
        return -1;
    }
};

标签:下标,int,needle,28,next,++,字符串,haystack,size
From: https://www.cnblogs.com/hisun9/p/18675719

相关文章

  • 代码随想录算法训练营第8天 | 344.反转字符串,541. 反转字符串II,替换数字
    一、刷题部分1.1题目名称原文链接:代码随想录题目链接:344.反转字符串-力扣(LeetCode)1.1.1题目描述编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组s的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用O(1)的额外空间解决......
  • 12.28
    @所有人网络安全C10-2024.12.28作业:sql注入漏洞中,常见的防护方案有哪些?请简述原理和用法关键字过滤在sql注入中是通过关键字查询到所以有关键字过滤(orandselect等)原理:通过正则表达式来对用户输入的进行正则匹配将其替换为空通过预处理的方法来进行防护原理首先将SQL语......
  • 28. 事件处理
    一、事件与事件处理1.1、什么是事件  事件是程序收到外界的输入,处于某种状态时自动发送的信号。事件有固定的类型,每种类型有自己的处理函数,用户只要重写这些函数,即可达到特定的目的。通过事件可以用一个控件监测另外一个控件,并可过滤被监测控件发出的事件。  可视化应用程......
  • Json 序列化,将对象序列化为Json字符串(此Json序列化,是“不安全的放松JSON转义”,即不会
    ///<summary>///Json序列化帮助类///</summary>publicclassJsonSerializerHelper{///<summary>///将对象序列化为Json字符串(此Json序列化,是“不安全的放松JSON转义”,即不会将物特殊符号和中文进行转码)///</summary>///<paramname="obj"></param>......
  • Peripheral Myelin Protein P2 (53-78),bovine;外周髓鞘蛋白P2(53-78),牛;TESPFKNTEISFKLGQEFE
    【PeripheralMyelinProteinP2(53-78),bovine 简介】    PeripheralMyelinProteinP2(53-78),bovine(简称PMP2)是一种来源于牛的外周髓鞘P2蛋白的肽段,具体来说,是由该蛋白的第53至78位氨基酸残基组成的片段。PeripheralMyelinProteinP2(53-78),bovine是一种......
  • [2834]基于JAVA的著作权登记智慧管理系统的设计与实现
    毕业设计(论文)开题报告表姓名学院专业班级题目基于JAVA的著作权登记智慧管理系统的设计与实现指导老师(一)选题的背景和意义随着科技的发展,数字化技术在各个领域的应用越来越广泛。特别是在知识产权领域,著作权登记、管理、保护等方面的工作也面临着数字化转型的挑战。然而......
  • [2823]基于JAVA的药店销售智慧管理系统的设计与实现
    毕业设计(论文)开题报告表姓名学院专业班级题目基于JAVA的药店销售智慧管理系统的设计与实现指导老师(一)选题的背景和意义在当今社会,药店作为医疗保健服务的重要组成部分,其日常运营管理和药品销售管理对于保障公众健康具有重要意义。随着科技的不断发展和信息化水平的提高......
  • 写个方法,找出指定字符串中重复最多的字符及其长度
    在前端开发中,你可以使用JavaScript来实现这个功能。下面是一个示例方法,用于找出指定字符串中重复最多的字符及其长度:functionfindMostRepeatedChar(str){//创建一个空对象来存储字符及其出现的次数constcharCount={};//遍历字符串中的每个字符for(leti=0......
  • 字符串算法总结
    KMPAC自动机ACAMexKMPZ函数manacher后缀自动机SAM结论与思考一个节点\(i\)到根节点的链上所有节点endpos的并集是以\(i\)为结尾的所有字符串(以\(i\)为结尾的后缀)。节点\(i\)的endpos里所有后缀的出现次数相等,且儿子的endpos里的字符串长度一定大于父亲......
  • 可以用于分割字符串的方法(python)
    一、str.split(sep,maxsplit)函数(返回列表)sep:分隔符maxsplit:分割次数a="Helloworld"list1=a.split("",1)print(list1)结果:['Hello','world']二、str.rsplit(sep,maxsplit)函数(从右边开始分割,返回列表)sep:分隔符maxsplit:分割次数a="Helloworld&q......