KMP是一种简化的字符串匹配的方法,思路并没有那么简单。
对于简单的给定的字符串和子串,用c++string库中的substr方法就可以很简单的做到字符匹配!
比如pta上的7-3 病毒感染检测
就可以用如下代码实现:
#include <iostream>
#include <string.h>
using namespace std;
void reverse(string &a){//将字符串反转 
	int m=a.length();
	string d=a;
	for(int i=0;i<m-1;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<q-1;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<=b.length()-a.length();++j){
				c=b.substr(j,a.length());	
				if(compare(c,a,q)){
					flag=1;
					break;
				}
				else flag=0;
		}
		if(flag) cout<<"YES"<<endl;
		else cout<<"NO"<<endl;
	}
	return 0;
}
这样子真的简便了特别多!
但是这是一种偷懒的写法,需要对算法规模简化的话还是需要用到kmp算法!
原文:https://www.cnblogs.com/lgrdeboke/p/12835614.html