KMP算法实现
来源:互联网 发布:淘宝店怎样增加流量 编辑:程序博客网 时间:2024/06/03 14:44
KMP算法代码实现
之前看过一些KMP算法的实现 ,但是每次看完就会忘记,今天花了几个小时又理了理思路,加强一下理解:
下面的代码是找出目标串target中包含多少个匹配串partten,代码自己实现,鉴于时间仓促加个人编程能力有限,写的代码也很丑,大牛们可以考虑绕行…
参考:http://www.ituring.com.cn/article/59881
代码块
代码块语法遵循标准markdown代码,例如:
#include<iostream>#include<string>using namespace std;void Find_KMP(const string& target,const string& partten,int& sum){ int par_len = partten.size(); int tar_len = target.size(); int over_ride[par_len]; over_ride[0] = -1; int index ; for(int i=1;i<par_len;i++){ index = over_ride[i-1]; while(index>=0 && partten[index+1]!=partten[i]){ index = over_ride[index]; } if(partten[index+1] == partten[i]){ over_ride[i] = index + 1; } else{ over_ride[i] = -1; } } int i=0,j=0; sum = 0; while(i<tar_len){ while(j<par_len && i<tar_len){ if(target[i]==partten[j]){ i++;j++; } else if(j==0) i++; else j = over_ride[j-1]+1; } if(j == par_len && i<tar_len){ sum++; j = 0; } else break; } /** 是否能够找到匹配串的代码 while(i<tar_len&&j<par_len){ if(target[i]==partten[j]){ i++;j++; } else if(j==0) i++; else j = over_ride[j-1]+1; } if(j == par_len){ return true; } else return false; **/}//main函数int main(){ string target = "ababhababrhah"; string partten = "ab"; int sum ; /* if(Find_KMP(target,partten)){ cout << "find" << endl; } else cout << "no" <<endl; */ Find_KMP(target,partten,sum); cout <<"sum = " <<sum <<endl; return 0;}
0 0
- KMP算法及改进KMP算法实现
- [数据结构]KMP算法实现
- KMP算法的实现
- KMP算法实现
- KMP算法实现
- KMP 算法实现
- kmp算法实现
- KMP算法实现
- KMP算法和实现
- KMP算法实现
- KMP算法及实现
- KMP算法的实现
- KMP算法实现
- java实现kmp算法
- KMP算法C++实现
- KMP算法c++实现
- KMP算法java实现
- kmp算法实现
- Tomcat端口占用
- 基于Mac的网站临时域名发布小结
- 【.Net码农】html+ashx 表单提交示例
- openfire+smack收发消息
- 元组和数组
- KMP算法实现
- JS获取新浪实时股票行情数据
- 【使用JSOUP实现网络爬虫】修改数据-设置一个元素的HTML内容
- android Jvm 笔记。内存溢出。内存区域划分。垃圾回收气
- Mac配置全局 Composer
- leetCode #55 Jump Game 贪心
- 游戏之数独之最终的结果
- wpa_supplicant无线网络配置
- 解决Nginx的connect() to 127.0.0.1:8080 failed (13: Permission denied) while connect