手机
当前位置:查字典教程网 >编程开发 >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#最简单的关闭子窗体更新父窗体的实现方法

c#简单读取文本的实例方法

TextBox获取输入焦点时自动全选的实现方法

关于C#生成MongoDB中ObjectId的实现方法

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

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

c# 托盘双击不触发单击事件的实现方法

利用多线程句柄设置鼠标忙碌状态的实现方法

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

C#获取进程的主窗口句柄的实现方法

精品推荐
分类导航