KMP演算法的C#實現方法

來源:互聯網
上載者:User

標籤: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#實現方法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.