KMP算法的C#完成辦法。本站提示廣大學習愛好者:(KMP算法的C#完成辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是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#法式設計有所贊助。