標籤:com weight otto img 通過 原因分析 公眾號 迭代器 var
本文執行個體簡述了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#實現方法
本文地址: http://www.paobuke.com/develop/c-develop/pbk23527.html
相關內容C#圖片按比例縮放執行個體C# listview 點擊列頭排序的執行個體C#學習筆記整理_淺談Math類的方法C#公眾號與訂閱號介面開發範例程式碼
C#解析json字串總是多出雙引號的原因分析及解決辦法在.net應用程式中運行其它EXE檔案的方法C#特性 迭代器(下) yield以及流的延遲計算C#實現通過模板自動建立Word文檔的方法
KMP演算法的C#實現方法