字符串_模式匹配算法(求子串)
来源:互联网 发布:js压缩 tomcat 编辑:程序博客网 时间:2024/05/20 10:20
【声明】截图内容出于《数据结构》C语言版 严蔚敏;其余为原创
1、子串定位函数
步骤描述:
遍历主串S,并与子串T进行匹配。
指针i,j分别表示主串和子串的当前遍历位置
if(S[i]==T[j]),真,则指针加1;直到子串遍历结束 j=strlen(T),说明匹配成功,返回成功子串的起始位置,即 i-strlen;
若假,则匹配失败,指针i从主串的下一个字符开始遍历,即 i=i-j+1;指针j回到初始位置 j=0;
代码:
时间复杂度:最好 O(n+m) 最坏O(n*m)
2、KMP算法
克努特-莫里斯-普拉特算法(KMP算法),模式匹配的一种改进算法。借助“部分匹配”结果,将子串尽可能多的向右移动。
求部分匹配的next[i] 函数
代码:
void getNext(int *&next,char * T,int len){next[0]=-1;for(int j=1;j<len;++j){next[j]=0;int k=j-2;while(k>=0){for(int i=0;i<k;i++){if(T[i]!=T[j-k+i]) break;}if(i==k){next[j]=k;break;}--k;}}}
KMP算法代码:
0 0
- 字符串_模式匹配算法(求子串)
- 字符串模式匹配算法(字符串搜索)
- 字符串模式匹配算法
- 字符串模式匹配算法
- 字符串模式匹配算法
- 字符串模式匹配算法
- 字符串模式匹配算法
- 字符串模式匹配算法
- 字符串模式匹配算法(JAVA实现)
- 【算法和数据结构】_7_线性结构_字符串_模式匹配
- 关于字符串匹配(单模式匹配)的各种算法
- 字符串模式匹配KMP算法
- 字符串模式匹配KMP算法
- KMP字符串模式匹配算法
- 字符串模式匹配KMP算法
- KMP字符串模式匹配算法
- KMP字符串模式匹配算法
- 字符串模式匹配KMP算法
- android开发SQLite之getReadableDatabase() 和 getWritableDatabase()方法
- HDU 1060 Leftmost Digit(数论)
- 1048 -- 求某一整数序列的全排列问题
- nusoap传递对象数组
- Web请求过程
- 字符串_模式匹配算法(求子串)
- 1049 -- 矩阵翻转
- Leetcode: Reverse Linked List
- 1050 -- C语言合法标识符
- 第一天
- 《剑指Offer》面试题:找到第一个只出现一次的字符
- 用例图、类图中有哪些关系
- Maven 项目打包发布
- 全国省市区数据库