KMP算法的C#实现方法
本文实例简述了KMP算法的C#实现方法,分享给大家供大家参考。具体如下:
具体思路为:next函数求出模式串向右滑动位数,再将模式串的str的next函数值存入数组next。
具体实现代码如下:
staticvoidGetNextVal(stringstr,int[]next)
{
inti=0;
intj=-1;
next[0]=-1;
while(i<str.Length-1)
{
if(j==-1||str[i]==str[j])
{
i++;
j++;
next[i]=j;
}
else
{
j=next[j];
}
}
}
KMP算法代码如下:
staticintKMP(stringzstr,stringmstr)
{
inti,j;
int[]next=newint[mstr.Length];
GetNextVal(mstr,next);
i=0;
j=0;
while(i<zstr.Length&&j<mstr.Length)
{
if(j==-1||zstr[i]==mstr[j])
{
++i;
++j;
}
else
{
j=next[j];
}
}
if(j==mstr.Length)
returni-mstr.Length;
return-1;
}
staticvoidMain(string[]args)
{
stringzstr,mstr;
zstr=Console.ReadLine();
mstr=Console.ReadLine();
intpos1;
pos1=KMP(zstr,mstr);
if(pos1==-1)Console.WriteLine("没有匹配的字符串!");
elseConsole.WriteLine(pos1);
Console.Write("请按任意键继续。。");
Console.ReadKey(true);
}
}
希望本文所述对大家的C#程序设计有所帮助。
热门推荐
1 训练狗狗憋尿
2 狗狗追踪训练
3 狗狗训练要多少钱
5 深圳狗狗训练
6 训练狗狗唤回
7 狗狗叫怎么训练
8 狗狗训练班
10 狗狗社会化训练
11 狗狗叫回训练
12 广州狗狗训练学校
13 狗狗训练躺下
14 狗狗随行训练
15 训练狗狗巡回
16 狗狗要怎么训练
17 狗狗喂食训练
18 训练狗狗躺下