根据算法思路自己实现了kmp算法(未优化)
来源:互联网 发布:淘宝配送地在哪里修改 编辑:程序博客网 时间:2024/06/05 17:00
贴一下代码,日后再补充。
每一天都在尝试提高对计算机的兴趣,羡慕那些感兴趣、努力并且效率很高的程序员或准程序员,处于尴尬境地的我也只能默默努力!马上就大三了,不想一直高不成低不就的。
/** dandelion * * 20170807 * kmp算法 * */#include <iostream>#include<string>using namespace std;/**< len:匹配字符串的长度 */void getNext(int *next,string shortStr,int len){ /**q:匹配字符串截取长度*/ int q = 2; for(;q<=len; q++) { for(int i=1 ;i<q; i++) { if( shortStr.substr(0,i) == shortStr.substr(q-i,i) )/**比较前i位与后i位是否相同*/ next[q-1]=i;/**前后缀相同的长度*/ } }}/**< */int Kmp(int *next,string longStr,string shortStr,int *rezult ,int lenLong,int lenShort){ int i = 0; int Long = lenLong; int Short = lenShort; int loc = 0;/**< len:目标字符串的位置*/ int q = 0;/**< 匹配字符串的位置*/ while(loc<Long) { q=0; while(q<Short) { if(longStr[loc]!=shortStr[q])/**< 匹配不成功时,目标字符串位置根据next【】向后移动*/ { loc=loc-next[q]+1; break; } else { q++; loc++; } } if(q==Short) rezult[i++]=loc-Short; } return i;}int main(){ string longString("babcbabcabcaabcabcabcacabc"); string shortString("abcabcacab"); int lenLong = longString.length(); int lenShort = shortString.length(); int next[lenShort]={0}; int result[20]; getNext(next,shortString,lenShort);/**计算next数组*/ int x = Kmp(next,longString,shortString,result,lenLong,lenShort); for(int i = 0 ; i < x; i++) cout<<result[i]<<" "; //for(int i = 0; i<lenShort; i++) // cout<<next[i]<<" "; return 0;}
阅读全文
0 0
- 根据算法思路自己实现了kmp算法(未优化)
- KMP算法(未优化版本,算法导论原版)
- KMP模式匹配算法--未优化
- KMP算法(未完结)
- C++实现KMP算法(优化版)
- kmp算法设计思路
- KMP算法思路
- KMP算法的自己体会和实现
- Kmp字符匹配算法优化C++实现
- KMP算法——C++优化实现
- KMP算法的实现及优化
- 字符串匹配之KMP算法思路、原理与Java实现
- 字符串匹配之KMP算法思路、原理与Java实现
- KMP算法及其优化算法
- KMP算法及其优化
- KMP算法优化
- KMP算法的优化
- KMP算法及其优化
- laravel框架手机发送验证码
- [Leetcode] Week Two & Three ------ Array
- 102. Binary Tree Level Order Traversal(Java)
- Swift_学习笔记_基础知识
- java 中 对象的复制
- 根据算法思路自己实现了kmp算法(未优化)
- react-native 导入本地Image Error: "unexpected character"
- LintCode148
- 剑指offer--顺时针打印矩阵
- 剑指offer:二叉树中和为某一值的路径
- hdu5920(字符串模拟)
- WebSocket安卓客户端实现详解(二)--客户端发送请求
- MOOC 中国大学 python爬取股票信息
- 基于Vue2.0实现屏幕可视区域图片懒加载