kmp算法实现字符串匹配
来源:互联网 发布:矩阵防御 app 编辑:程序博客网 时间:2024/05/18 07:12
今天晚上知道了这个算法,看了后凭记忆理解自己又写了一遍,日后会加上注释和思路
#include<iostream>#include<cstdio>#include<string>#include<cstring>using namespace std;void find_fun(string pstr, int *num){int i;int len = pstr.length();int index;//int* num = new int[len + 1];num[0] = -1;for (i = 1; i < len; i++){index = num[i - 1];if (pstr[i] != pstr[index + 1] && index >= 0){index = -1;}if (pstr[i] == pstr[index + 1]){index++;num[i] = index;}else{num[i] = -1;}}num[i] = '\0';for (i = 0; i < len; i++){cout << num[i] << " ";}cout << endl;}int main(){while (true){string pstr="";string str="";int i, j;cout << "输入目标字符串:" << endl;cin >> pstr;cout << "输入源字符串:" << endl;cin >> str;if (pstr == "end")break;int len = pstr.length();int n = str.length();int* num = new int[len + 1];find_fun(pstr, num);for (i = 0,j=0; (i < n)&&(j<len); ){if (pstr[j] == str[i]){j++;i++;}else{if (j == 0){i++; j++;}else{j = num[j - 1] + 1;}}}if (j == (len)){cout << "匹配成功,索引在:" << i-len << endl << "str[i-1-len]==" << str[i-len] << endl;}elsecout << "匹配不成功" << endl;}return 0;}
0 0
- kmp字符串匹配算法实现
- 字符串匹配KMP算法实现
- KMP字符串匹配算法实现
- 字符串匹配算法KMP实现
- kmp算法实现字符串匹配
- 【小算法】KMP字符串匹配算法实现
- KMP字符串匹配算法C语言实现
- 字符串匹配的KMP算法实现
- kmp算法实现的字符串匹配
- KMP字符串模式匹配算法实现(php)
- C++实现字符串匹配的KMP算法
- Golang实现的KMP字符串匹配算法
- 字符串匹配算法KMP Java实现
- KMP字符串匹配算法的分析实现
- kmp算法字符串匹配C语言实现
- 字符串匹配:KMP算法之JAVA实现
- KMP字符串模式匹配算法实现
- 字符串匹配KMP算法C++代码实现
- 【杂谈】写给正在过"程序员节"的我们
- ORACLE常用性能监控SQL【二】
- Android TV开发总结(五)TV上屏幕适配总结
- 共享栈
- Android—Gridview(网格视图)
- kmp算法实现字符串匹配
- Android艺术开发探索——第二章:IPC机制(下)
- 快速排序(Python实现)
- Verilog使用有符号数
- 深入浅出Collection Framework
- Java的反射机制学习1
- eHealth测试(翼华科技校园招聘会)_Day001
- 文件操作--文件流
- 正则表达式基础总结