目录
下一篇:KMP算法
一、什么是模式匹配
模式串:想尝试在主串中找到的串,但未必存在
在主串中找到与模式串相同的子串,并返回其所在位置
也就是定位操作
二、代码
int simplicityIndex(SString S,SString T){
int k=1;//记录第一次出现的位置
int i=k,j=1;//i是S的游标,j是T的游标
while(i<=S.length&&j<=T.length){
if(S.ch[i]==T.ch[j]){
i++;//继续比较后面的
j++;
}else{
k++;//检查下一个子串
i=k;
j=1;
}
}
//如果比较了全部的T中的字符
if(j>T.length)return k;
else return 0;
}
三、性能分析
较好的情况:每个子串第一个字符就与模式串不匹配
匹配成功最好时间复杂度O(m)
匹配失败最好时间复杂度:O(n-m+1)=O(n-m)≈O(n)
最坏情况
小结: