kmp字符串匹配.txt

来自「KMP字符串匹配的c实现」· 文本 代码 · 共 42 行

TXT
42
字号
#include<iostream.h>
#include<string.h>

int next[20];


int main(){
	char a[20]="abcdefghijk";
	char b[20]="abcdefgg";
	int i,j;
	i=0;next[0]=0;j=0;
	while(i<strlen(b))
	{
		if(j==0||b[i]==b[j])
		{
			++i;++j;
			if(b[i]!=b[j])
				next[i]=j;
			else
				next[i]=next[j];
		}
		else
			j=next[i];
	}
	i=0;j=0;
	while(i<strlen(a)&&j<strlen(b))
	{
		if(j==0||a[i]==b[j])
		{
			++i;++j;
		}
		else
			j=next[j];
	}
	if(j>=strlen(b))
		cout<<i-strlen(b);
	else
		cout<<"-1";
	return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?