算法模板——KMP字符串匹配
功能:输入一个原串,再输入N个待匹配串,在待匹配串中找出全部原串的起始位置
原理:KMP算法,其实这个东西已经包含了AC自动机的思想(fail指针/数组),只不过适用于单模板匹配,不过值得一提的是在单模板大量匹配待匹配串时,这个会有相当大的优势,AC自动机虽然好想一些,但是在这一类问题上的性价比就略低了
1 var 2 i,j,k,l,m,n:longint; 3 a:array[0..100000] of longint; 4 s1,s2:ansistring; 5 begin 6 readln(s1); 7 a[1]:=0; 8 for i:=2 to length(s1) do 9 begin 10 j:=a[i-1]; 11 while (j>0) and (s1[j+1]<>s1[i]) do j:=a[j]; 12 if s1[j+1]=s1[i] then a[i]:=j+1 else a[i]:=0; 13 end; 14 readln(n); 15 for l:=1 to n do 16 begin 17 readln(s2); 18 j:=0; 19 for i:=1 to length(s2) do 20 begin 21 inc(j); 22 if s1[j]=s2[i] then 23 begin 24 if j=length(s1) then 25 begin 26 write(i-length(s1)+1,' '); 27 j:=a[j]; 28 end; 29 end 30 else 31 begin 32 j:=j-1; 33 while (j>0) and (s1[j+1]<>s2[i]) do j:=a[j]; 34 if s1[j+1]=s2[i] then inc(j) else j:=0; 35 end; 36 end; 37 writeln; 38 end; 39 readln; 40 end. 41
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)