KMP算法的C#实现方法
本文实例简述了KMP算法的C#实现方法,分享给大家供大家参考。具体如下:
具体思路为:next函数求出模式串向右滑动位数,再将模式串的str的next函数值 存入数组next。
具体实现代码如下:
static void GetNextVal(string str, int [] next)
{
int i = 0;
int j = -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算法代码如下:
static int KMP(string zstr, string mstr)
{
int i, j;
int[] next = new int[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)
return i - mstr.Length;
return -1;
}
static void Main(string[] args)
{
string zstr, mstr;
zstr = Console.ReadLine();
mstr = Console.ReadLine();
int pos1;
pos1 = KMP(zstr, mstr);
if (pos1 == -1) Console.WriteLine("没有匹配的字符串!");
else Console.WriteLine(pos1);
Console.Write("请按任意键继续。。");
Console.ReadKey(true);
}
}
希望本文所述对大家的C#程序设计有所帮助。
同类资源
- delphi实现ftp上传下载文件到客户端
delphi实现ftp上传下载文件到客户端本文件感兴趣的可以参考一下。...
- 解决eclispe导入web项目报错的方法
解决eclispe导入web项目报错的方法本文件感兴趣的可以参考一下,把WEB项目导入到eclipse,如果在项目图标左下...
- 易语言实现Base64、MD5、SHA、AES、RAS等加解密js库文件
易语言实现Base64、MD5、SHA、AES、RAS等加解密js库文件例子源代码,各种加密解密的实现。...
- 服务器组件多线程,用写内存的方法
易语言服务器组件多线程,用写内存的方法例子源代码,可以支持多少连接我没有测试,你们可以测试了发布出来。...
- c#调用dll,dll加载epk
易语言c#调用dll,dll加载epk例子源代码,通过c#调用dll,易语言写dll调用epk。...
- C#版的模块中所有的api和相关的结构体的声明
C#版的模块中所有的api和相关的结构体的声明例子源代码,直接用易语言封装成dll调用。...
- UI自绘操作界面实现发送消息
UI自绘操作界面实现发送消息例子源代码,可实现利用自绘操作识别QQ。...
- SMA4加密算法
SMA4加密算法例子源代码,今天给大家带来了SMA4加密算法。...
- Dx11实现简单2D文字线条简单图形
Dx11实现简单2D文字线条简单图形例子源代码,D3D结合D2D实现注释常量均有。...
- 易语言抖动算法
易语言抖动算法例子源代码,DIY激光雕刻机可以用到,抖动代码部分来源网络。...
- tscon实现使关闭远程桌面后仍处于可交互状态
tscon实现使关闭远程桌面后仍处于可交互状态例子源代码,源码实现了tscon.exe1/dest:console同样的效果。...
- 易语言模拟实现手机组件的滑动效果,按住滑动组件
易语言模拟实现手机组件的滑动效果例子源代码,本源码用易语言实现像手机输入法这种,在小窗口内显示多个按键...