字符串匹配算法
来源:互联网 发布:外贸搜客户软件 编辑:程序博客网 时间:2024/06/14 11:07
在做字符串之类的题目的时候,字符串匹配算法是经常需要的。下面给出经典的KMP算法:
void compute_prefix(string pattern, int *prefix){ int len=pattern.size(); prefix[0]=-1; int k=-1; for(int q=1 ; q<len ; q++){ while(k>-1 && pattern[k+1]!=pattern[q]) k=prefix[k]; if(pattern[k+1]==pattern[q]) k++; prefix[q]=k; }}int kmp_match(const string& target, const string& pattern){ int target_len=target.size(); int pattern_len=pattern.size(); int *prefix=new int[pattern_len]; int q=-1; compute_prefix(pattern,prefix); for(int i=0 ; i<target_len ; i++){ while(q>-1 && pattern[q+1]!=target[i]) q=prefix[q]; if(pattern[q+1]==target[i]) q++; if(q==pattern_len-1) return i-pattern_len+1; } return -1;}
compute_prefix是计算前缀数组用的。
- 算法 字符串匹配算法
- 字符串匹配算法
- BM字符串匹配算法
- KMP 字符串匹配算法
- 字符串匹配算法
- 字符串匹配算法
- 字符串匹配算法(摘)
- 字符串匹配算法
- 字符串匹配算法
- 字符串匹配的算法
- kmp字符串匹配算法
- 字符串匹配算法
- 字符串匹配算法研究
- 字符串模式匹配算法
- kmp字符串匹配算法
- KMP字符串匹配算法
- 字符串模式匹配算法
- BM字符串匹配算法
- jQuery获得页面元素的绝对/相对位置
- outlook 附件大小 解除限制
- &菜鸟收藏:熟知Word箭头样式类型设置&【系统收藏】
- android paint类介绍
- 标识符的命名规则(此规则强于ISO/ANSI C的规定)
- 字符串匹配算法
- LoadRunner基础(三)
- FLV文件格式解析
- 深入学习Django源码基础3 - python提供的对象默认方法
- MP4文件格式解析 之 二 (Sample table atom )
- Visual Studio opens the default browser instead of Internet Explorer
- POJ 1472 Coins (多重背包+滚动数组)
- Iscroll4 实现 横竖左右滚动,滑动效果比拟andriod原生.
- linux多线程