手机
当前位置:查字典教程网 >编程开发 >C#教程 >KMP算法的C#实现方法
KMP算法的C#实现方法
摘要:本文实例简述了KMP算法的C#实现方法,分享给大家供大家参考。具体如下:具体思路为:next函数求出模式串向右滑动位数,再将模式串的str的...

本文实例简述了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#程序设计有所帮助。

【KMP算法的C#实现方法】相关文章:

C#实现对AES加密和解密的方法

C#连接Oracle数据库的实例方法

C# 鼠标穿透窗体功能的实现方法

基于反射解决类复制的实现方法

C#计算代码执行时间的方法

C#操作注册表的方法

两路归并的数组与链表的实现方法

深入线程安全容器的实现方法

C# 语音功能的实现方法

C# SendInput 模拟鼠标操作的实现方法

精品推荐
分类导航