字符串匹配算法
来源:互联网 发布:免费票据打印软件 编辑:程序博客网 时间:2024/05/17 02:27
#include<stdio.h>
#include<string.h>
//计算next数组
void computeNext(int next[], char T[])
{
int len = strlen(T);
if (len == 0)
return;
next[0] = 0;
for (int i = 1; i < len; i++)
{
if (T[i] == T[next[i - 1]])
next[i] = next[i - 1] + 1;
else
{
if (T[i] == T[0])
next[i] = 1;
else
next[i] = 0;
}
}
next[len] = -1;
}
//匹配字符串
int matchStr(char P[], char T[],int next[])
{
int lenP = strlen(P);
int lenT = strlen(T);
int start = 0;
while (start <= (lenP - lenT))
{
for (int i = 0; i < lenT; i++)
{
if (P[start + i] == T[i] && i == lenT - 1)
return start;
if (P[start + i] != T[i])
{
if (i == 0)
start++;
else
start = start + (i - next[i - 1]);
printf("temp start:%d\n", start);
fflush(stdout);
break;
}
}
}
return -1;
}
void main()
{
char P[100] = "ABCDAAABCDABCDACDABCDABABCDABCDACDABCDABABCDABCDACD";
char T[50] = "ABCDABABCDABCDACD";
int next[50];
computeNext(next, T);
int k = 0;
while (next[k] != -1)
{
printf("next[%d]=%d\n", k, next[k]);
fflush(stdout);
k++;
}
int start = matchStr(P, T, next);
printf("start from:%d\n", start);
fflush(stdout);
}
KMP算法(难点):
- 算法 字符串匹配算法
- 字符串匹配算法
- BM字符串匹配算法
- KMP 字符串匹配算法
- 字符串匹配算法
- 字符串匹配算法
- 字符串匹配算法(摘)
- 字符串匹配算法
- 字符串匹配算法
- 字符串匹配的算法
- kmp字符串匹配算法
- 字符串匹配算法
- 字符串匹配算法研究
- 字符串模式匹配算法
- kmp字符串匹配算法
- KMP字符串匹配算法
- 字符串模式匹配算法
- BM字符串匹配算法
- 对工厂模式的理解
- crackme.chm之figugegl_2b
- C# webBrowser 截取验证码截图的两种方式
- OpenGL学习——二维几何变换
- DIV元素响应键盘事件
- 字符串匹配算法
- Objective-C中的instancetype和id关键字
- 常州隆胸整形有哪些医院
- 2复合
- adobe acrobat 无效批注对象
- 相关运算(correlation filter)与 imfilter
- hdu 2850——Load Balancing
- 利用位操作
- Java泛型理解