学习KMP算法时想到的另一种好方法

2021-01-28 19:17

阅读:795

标签:病毒   main   感染   nbsp   std   ace   lse   算法   ||   

KMP是一种简化的字符串匹配的方法,思路并没有那么简单。

对于简单的给定的字符串和子串,用c++string库中的substr方法就可以很简单的做到字符匹配!

比如pta上的7-3 病毒感染检测 

就可以用如下代码实现:

#include
#include
using namespace std;
void reverse(string &a){//将字符串反转
int m=a.length();
string d=a;
for(int i=0;i a[i]=a[i+1];
}
a[m-1]=d[0];
}
int compare(string &c,string &a,int q){//将字符串进行比较
string d=a;
int flag=0;
for(int i=0;i reverse(d);
if(c==a||c==d){
flag=1;
break;
}
else flag=0;
}
return flag;
}
int main()
{
string a,b,c,d,e;
int n,m,q,flag=0;
cin>>n;
while(n--){
cin>>a;
cin>>b;
d=a;
q=b.length()-a.length();
for(int j=0;j c=b.substr(j,a.length());
if(compare(c,a,q)){
flag=1;
break;
}
else flag=0;
}
if(flag) cout else cout }
return 0;
}

这样子真的简便了特别多!

但是这是一种偷懒的写法,需要对算法规模简化的话还是需要用到kmp算法!

学习KMP算法时想到的另一种好方法

标签:病毒   main   感染   nbsp   std   ace   lse   算法   ||   

原文地址:https://www.cnblogs.com/lgrdeboke/p/12835614.html


评论


亲,登录后才可以留言!