程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> KMP算法的C#完成辦法

KMP算法的C#完成辦法

編輯:C#入門知識

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#法式設計有所贊助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved