串的应用-KMP算法匹配

81 阅读1分钟
bool KMP(string str,string sub_str,int *next){
	int i=0,j=0;
	while(i<str.length()){
		if(str[i]==sub_str[j]&&j<sub_str.length()){
			i++;
			j++; 
		}else if(j==sub_str.length()){
			return 1;
		}else if(str[i]!=sub_str[j]&&j<sub_str.length()){
			if(j==0) i++;
			else j=next[j];
		}else i++;
	}
	if(i==str.length()&&j==sub_str.length()) return 1;//最后一个匹配成功 
	return 0;
}