关注
#include <iostream>
#include <string>
using namespace std;
int b_force_match(string str, string ptr)
{
int i, j, temc;
int tlen = ptr.length();
int plen = str.length();
for (i = 0, j = 0; i <= plen - tlen; i++)
{
temc = i;
j = 0;
while (str[temc] == ptr[j] && j < tlen)
{
temc++;
j++;
}
if (j == tlen)
return i;
}
return -1;
}
void clnext(string str, int *next)
{
int len=str.length();
next[0] = -1;
int k = -1;
for (int q = 1; q < len; q++)
{
while (k > -1 && str[k + 1] != str[q])
k = next[k];//回溯
if (str[k + 1] == str[q])
k++;
next[q] = k;
}
}
int KMP(string str,string ptr)
{
int slen=str.length();
int plen=ptr.length();
int *next = new int[plen];
clnext(ptr, next);
int k = -1;
for (int i = 0; i < slen; i++)
{
while (k >-1&& ptr[k + 1] != str[i])
k = next[k];
if (ptr[k + 1] == str[i])
k = k + 1;
if (k == plen-1)
{
delete next;
return i-plen+1;
}
}
delete next;
return -1;
}
int main()
{
string str = "ahraaahahafafderqhgadgdfghadfhnmym,,aryzkiababaabaftyacfabaou";
string ptr = "ababaabaf";
cout << "patternmatch" << endl;
cout << "b_force:" << endl;
cout << b_force_match(str, ptr) << endl;
cout<<"KMP:"<<endl;
cout << KMP(str, ptr) << endl;
return 0;
}
查看原帖
点赞 评论
相关推荐
pluck*0916:刚开始都会这样滴
点赞 评论 收藏
分享
06-13 01:23
中南民族大学 嵌入式软件开发 点赞 评论 收藏
分享
06-16 18:15
湖南人文科技学院 Java 湫湫湫不会java:1.在校经历全删了2.。这些荣誉其实也没啥用只能说,要的是好的开发者不是好好学生3.项目五六点就行了,一个亮点一俩行,xxx技术解决,xxx问题带来xxx提升。第一页学历不行,然后啥有价值的信息也没有,到第二页看到项目了,第一个项目九点,第二个项目像凑数的俩点。总体给人又臭又长,一起加油吧兄弟
点赞 评论 收藏
分享
06-30 18:07
江西理工大学 Java 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 你觉得实习能学到东西吗 #
31403次浏览 639人参与
# 机械人集合!你是什么工程师? #
15418次浏览 89人参与
# 现代汽车前瞻技术研发急速编程挑战赛 #
26183次浏览 212人参与
# 秋招什么时候开投比较合适? #
19423次浏览 276人参与
# 发工资后,你做的第一件事是什么 #
67630次浏览 229人参与
# 如何准备秋招 #
18371次浏览 351人参与
# 百度工作体验 #
219728次浏览 1959人参与
# 机械人与华为的爱恨情仇 #
116298次浏览 942人参与
# 工作中哪个瞬间让你想离职 #
25511次浏览 177人参与
# 硬件应届生薪资是否普遍偏低? #
73667次浏览 514人参与
# 不考虑转正,实习多久合适 #
31666次浏览 145人参与
# 影石Insta360求职进展汇总 #
123197次浏览 1069人参与
# 通信和硬件还有转码的必要吗 #
57318次浏览 526人参与
# 24届的你们都什么时候入职? #
60008次浏览 424人参与
# 面试被问期望薪资时该如何回答 #
256055次浏览 1479人参与
# 实习,不懂就问 #
42455次浏览 648人参与
# 你们公司几号发工资 #
20575次浏览 139人参与
# 软开人,秋招你打算投哪些公司呢 #
102511次浏览 958人参与
# 每个月的工资都是怎么分配的? #
25492次浏览 411人参与
# 如果你有一天可以担任公司的CEO,你会做哪三件事? #
29046次浏览 460人参与
# 你觉得现在还能进互联网吗? #
7643次浏览 130人参与