最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

KMP算法的C#實(shí)現(xiàn)方法

 更新時(shí)間:2014年09月11日 11:10:38   投稿:shichen2014  
這篇文章主要介紹了KMP算法的C#實(shí)現(xiàn)方法,代碼簡(jiǎn)潔實(shí)用,需要的朋友可以參考下

本文實(shí)例簡(jiǎn)述了KMP算法的C#實(shí)現(xiàn)方法,分享給大家供大家參考。具體如下:

具體思路為:next函數(shù)求出模式串向右滑動(dòng)位數(shù),再將模式串的str的next函數(shù)值 存入數(shù)組next。

具體實(shí)現(xiàn)代碼如下:

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("沒(méi)有匹配的字符串!");
  else Console.WriteLine(pos1);
  Console.Write("請(qǐng)按任意鍵繼續(xù)。。");
  Console.ReadKey(true);
}
}

希望本文所述對(duì)大家的C#程序設(shè)計(jì)有所幫助。

相關(guān)文章

最新評(píng)論

筠连县| 英超| 黄山市| 临城县| 丰顺县| 黔西县| 新民市| 清远市| 东乡| 扎赉特旗| 凯里市| 五华县| 望奎县| 全椒县| 吐鲁番市| 若尔盖县| 奇台县| 阿巴嘎旗| 高台县| 保亭| 土默特左旗| 台中县| 岱山县| 安福县| 包头市| 桦川县| 新巴尔虎左旗| 通州区| 华安县| 阿巴嘎旗| 泊头市| 安多县| 保靖县| 绥滨县| 张家界市| 镶黄旗| 井研县| 平山县| 天门市| 道真| 荥经县|