KMP算法C#/c++实现
来源:互联网 发布:难言之欲网络剧百度云 编辑:程序博客网 时间:2024/04/28 21:24
直接上代码:
using System;
using System.Collections.Generic;
using System.Text;
namespace dotnetKMP
{
class Program
{
public static int[] strNext;//失效函数值
static void Main(string[] args)
{
const string strForTest = "abaabcac";
const string strForAim = "abaabcac";
SetNext(strForTest);
int i = KMP(strForAim, strForTest);
Console.Read();
}
/// <summary>
/// 对输入串进行失效匹配初始化
/// </summary>
public static void SetNext( string inputStr)
{
int strLen = inputStr.Length;
strNext = new int[strLen];
int i = 0, j = -1;
strNext[0] = -1;
while(i<strLen)
{
if (j == -1 || inputStr[i] == inputStr[j])
{
i++;
if (i >= strLen)
break;
j++;
strNext[i] = j;
}
else
{
j = strNext[j];
}
}
}
/// <summary>
/// KMP算法实现 输出输入串在目标串中的起始位置 没有则输出-1
/// </summary>
/// <param name="aimStr">目标串</param>
/// <param name="testStr">输入串</param>
public static int KMP(string aimStr,string testStr)
{
int i = 0, j = 0;
while(i< aimStr.Length&&j < testStr.Length)
{
if(j==-1)
{
i++;
j = 0;
}
else if(aimStr[i] == testStr[j])
{
i++;
j++;
}
else
{
j = strNext[j];
}
}
if (j < testStr.Length)
{
return -1;
}
else
return i - j;
}
}
}
- KMP算法C实现
- KMP算法c实现
- KMP算法 C实现
- [C++]KMP算法实现
- KMP算法c语言实现
- KMP算法C#/c++实现
- KMP算法C代码实现
- KMP算法--c语言实现
- KMP算法(c++)实现
- KMP算法C代码实现
- kmp算法实现-算法导论C语言版
- [C++] [算法] KMP算法
- KMP算法的C语言代码实现
- kmp算法的c代码实现
- KMP字符串匹配算法C语言实现
- KMP算法的C语言实现
- KMP算法C语言的实现
- 模式匹配 KMP C语言算法实现
- sqlplus取消变量定义
- sizeof('a')的值为什么不一样?
- asp.net关于@Register使用
- c++语法之预定义索引
- 介绍 JSON
- KMP算法C#/c++实现
- linux环境变量设置 以及 source命令
- 玩转Google开源C++单元测试框架Google Test系列(gtest)之一 - 初识gtest
- VrWorking Data Grid Class v0.3a
- opacity过滤器
- opensolaris下的IPS(Image Packaging System)
- 忙里偷闲
- 使用NSTimer与UIView的动画,实现飘雪效果
- JSON入门教程