KMP前缀表 ≈ find() 函数——28.找出字符串中第一个匹配项的下标【力扣】

devtools/2025/1/15 15:29:14/

在这里插入图片描述

class Solution {
public:
//得到前缀表void getNext(int *next,string needle){int j=0;for(int i=1;i<needle.size();i++){while(j>0 && needle[j]!=needle[i]) j=next[j-1];//**j>0**=>j==0是出口if(needle[i]==needle[j]) j++;next[i]==j;//若写入if中,则该行意思变为当匹配时才给next赋值,没能顾及到回退时的赋值}}int strStr(string haystack, string needle) {if(needle.size()==0) return 0;vector<int> next(needle.size());getNext(&next[0],needle);int j=0;for(int i=0;i<haystack.size();i++){while(j>0 && haystack[i]!=needle[j]) j=next[j-1];//运用前缀表if(haystack[i]==needle[j]) j++;if(j==needle.size()) return i-needle.size()+1;}return -1;}
};

find解答

class Solution {
public:int strStr(string haystack, string needle) {return haystack.find(needle);}
};

http://www.ppmy.cn/devtools/150409.html

相关文章

【C语言】标准IO

目录 1. 什么是标准IO 1.1概念 1.2特点 1.3 操作 2. 缓存区 3. 函数接口 3.1打开文件fopen 3.2关闭文件 3.3读写文件操作 3.3.1每次读写一个字符&#xff1a;fgetc()、fputc() a. 针对文件 b. 针对终端 3.3.2 每次一串字符的读写fgets()和fputs() c. 针对终端 d…

ssl与ipsec的区别

ssl与ipsec的区别&#xff1a; 1.概念不同: ssl是一种安全协议&#xff0c;可通过Internet安全地发送信息&#xff0c;而ipsec即Internet协议安全性&#xff0c;是为Internet协议提供安全性的一组协议。 2.所在层不同: ssl在传输和应用层中工作&#xff0c;而ipsec在Interne…

慧集通(DataLinkX)iPaaS集成平台-业务建模之业务对象(二)

3.UI模板 当我们选择一条已经建好的业务对象点击功能按钮【UI模板】进入该业务对象的UI显示配置界面。 右边填写的是UI模板的编码以及对应名称&#xff1b;菜单界面配置以业务对象UI模板编码获取显示界面。 3.1【列表-按钮】 展示的对应业务对象界面的功能按钮配置&#xff1…

Qt的.pro文件中宏的作用

Qt的.pro文件中宏的作用 今天在学习别人的Qt项目时&#xff0c;看到.pro Qt的项目文件中几个宏的定义不知道是什么意思&#xff0c;于是就想着记录下来以备后面复习。 1.greaterThan(QT_MAJOR_VERSION, 5): QT core5compat&#xff1a; 1.1 作用 版本判断与模块添加&#…

java 从零开始手写 redis(六)redis AOF 持久化原理详解及实现

1、接口 /*** 持久化缓存接口* author binbin.hou* since 0.0.7* param <K> key* param <V> value*/ public interface ICachePersist<K, V> {/*** 持久化缓存信息* param cache 缓存* since 0.0.7*/void persist(final ICache<K, V> cache);}接口和 …

Linux网络编程5——多路IO转接

一.TCP状态时序理解 1.TCP状态理解 **CLOSED&#xff1a;**表示初始状态。 **LISTEN&#xff1a;**该状态表示服务器端的某个SOCKET处于监听状态&#xff0c;可以接受连接。 **SYN_SENT&#xff1a;**这个状态与SYN_RCVD遥相呼应&#xff0c;当客户端SOCKET执行CONNECT连接时…

21天学通C++第八章——指针

C虽然可以动态的管理内存&#xff0c;但是并不能像其他高级语言如JAVA、C#有自动垃圾收集器去对应用程序的内存进行清理。 常见指针错误 内存泄漏 解释&#xff1a; 在使用完new申请内存之后&#xff0c;没有配套的delete&#xff0c;则之后会产生内存泄漏。 即如何理解&a…

【数字化】华为-用变革的方法确保规划落地

导读&#xff1a;华为在数字化转型过程中&#xff0c;深刻认识到变革的必要性&#xff0c;并采用了一系列有效的方法确保转型规划的有效落地。华为认为&#xff0c;数字化转型不仅仅是技术层面的革新&#xff0c;更是企业运作模式、流程、组织、文化等深层次的变革。数字化转型…