<字符串匹配>KMP算法为何比暴力求解的时间复杂度更低?
2024-09-02 16:21:17
str表示文本串,m表示模式串;
str[i] 和 m[j] 是正在进行匹配比较的字符;
KMP的时间复杂度是O(m+n) , 暴力求解的时间复杂度是O(m*n)
KMP利用了m[ 0 : j-1 ]和str[ i-j : i-1 ]是相同的这一点,而暴力求解显然做不到.
int kmp(string str,string m)
{
int next[MAXN];
next[] = -;
int i=;
int j=-;
while(i<m.size())
{
if(j==- || m[i]==m[j])
{
i++;
j++;
next[i] = j;
}
else
{
j = next[j];
}
} i=;
j=;
while(i<str.size() && j<m.size())
{
if(j==- || str[i]==m[j])
{
i++;
j++;
}
else
{
j =next[j];
}
if(j==m.size()-1)
{
return i-j;
}
}
return -1;
}
最新文章
- vi编辑器命令
- Neural Style学习2——环境安装
- 最清晰的Android多屏幕适配方案
- console的一个小易错点
- hdu 4445
- MySQL高可用性大杀器之MHA | 火丁笔记
- [转]Android读写文件
- Fedora15下搭建QT开发环境及编译QT
- html音视频标签
- ubuntu下打开chm文件
- Apex 中的自定义迭代器
- SQL Server之深入理解STUFF
- 保护 .NET Core 项目的敏感信息
- 编写脚本,出现 TypeError: exceptions must be old-style classes or derived from BaseException, not unicode怎样解决?
- T-SQL 类型转换
- ORM数据库框架 LitePal SQLite MD
- 【spring框架】spring获取webapplicationcontext,applicationcontext几种方法详解--(转)
- 使用ABP框架踩过的坑系列4
- 微信小程序页面3秒后自动跳转
- jQuery.toggleClass() 和detach()方法详解