欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

KMP算法的C#实现方法

程序员文章站 2023-12-20 13:39:40
本文实例简述了kmp算法的c#实现方法,分享给大家供大家参考。具体如下: 具体思路为:next函数求出模式串向右滑动位数,再将模式串的str的next函数值 存入数组ne...

本文实例简述了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#程序设计有所帮助。

上一篇:

下一篇: