KMP算法实现
2015-11-11 13:10
295 查看
#include<iostream> #include<string.h> using namespace std; void GetNext(char *p,int next[]); int KmpMatch(char *s,char *p,int next[]); int main() { char *p = new char; char *s = new char; cin.getline(s,100); cin.getline(p,100); int temp[100]; // Next函数值计算 GetNext(p,temp); // KMP匹配执行 cout<<KmpMatch(s,p,temp)<<endl; return 0; } void GetNext(char *p,int temp[]) { int pLen = strlen(p); int i = 0; int j = -1; temp[0] = -1; while(i < pLen-1) { if (j == -1 || p[i] == p[j]) { i++; j++; if (p[i] != p[j]) { temp[i] = j; } else { temp[i] = temp[j]; } } else { j = temp[j]; } } } int KmpMatch(char *s,char *p,int temp[]) { int sLen = strlen(s); int pLen = strlen(p); int i = 0; int j = 0; while (i < sLen && j < pLen) { if (j== -1 || s[i] == p[j]) { i++; j++; } else { j = temp[j]; } } if (j == pLen) { return i-j; } else { return -1; } }
相关文章推荐
- ASP编码必备的8条原则
- XML指南——XML编码
- C#中字符串编码处理
- ExtJS中文乱码之GBK格式编码解决方案及代码
- 程序员趣味读物 谈谈Unicode编码
- 文本文件编码方式区别
- C语言安全编码之数值中的sizeof操作符
- C#实现获取文本文件的编码的一个类(区分GB2312和UTF8)
- VC中BASE64编码和解码使用详解
- 计算机中的字符串编码、乱码、BOM等问题详解
- Base64编码解码原理及C#编程实例
- C#编码好习惯小结
- javascript编码的几个方法详细介绍
- UTF8编码开发中页面空白问题的解决方法
- php生成固定长度纯数字编码的方法
- 重新restore了mysql到另一台机器上后mysql 编码问题报错
- c# Base64编码和图片的互相转换代码
- java自动根据文件内容的编码来读取避免乱码
- PHP写入WRITE编码为UTF8的文件的实现代码
- 设置php页面编码的两种方法示例介绍