数据结构
一剑风寒起
向着目标,缓慢而坚定!
展开
-
串匹配算法的理解之简单算法
串匹配的算法主要有三个,简单算法,首尾算法,KMP算法,简单算法是其它两个算法的基础.1,简单算法//效率低,从表面上是一个单层循环,实际是一个双重循环看一下这个算法的复杂度:对于每一个起始的i值,i和j两个指针相加,相加的j还没有大于这个的时候,又产生不等的情况,i指针要回溯了回溯i=i-j+2,在起始的第两个位置开始,对于每一个i值来说,从pos到串长,对j来说,比较串长,原创 2012-02-05 16:31:44 · 408 阅读 · 0 评论 -
修正版求KMP中next值求法
S='aaabaaabaaabaaabaaab'T='aaaab'next[j]=01234修正:nextval[j]=00004//修正next后算法void get_nextVal(SString &T,int &next[]){//求模式串T的next函数值班差存入数组next.i=1;next[1]=0;j=0;while(iif(j=0||T[i]原创 2012-02-05 16:34:50 · 719 阅读 · 0 评论 -
KMP算法next值的求解
//求next函数值的过程本身是一个递归过程,分析如下://next[7]=2,存在T[6]=T[1] k-1 T[7]=T[2]//'t[6,7]'='t[1,2]' next[8]=3//t1=t3已知:next[1]=0;假设:next[j]=k;又T[j]=T[k]则:next[j+1]=k+1若:T[j]!=T[k]则需要往前朔,检查T[j]=T[?]原创 2012-02-05 16:33:57 · 618 阅读 · 0 评论 -
串匹配算法之进阶首尾匹配法
2,首尾匹配算法先比较第一个字符串,再比较最后一个字符串int Index(SString S,SString T,int pos){sLength=S[0];tLength=T[0];i=pos;patStartChar=T[1];patEndChar=T[tLength];while(iif(S[i]!=patStartChar) ++i;//重新查找匹配起点e原创 2012-02-05 16:32:34 · 1379 阅读 · 0 评论 -
串匹配算法之最终版KMP算法
KMP算法理解起来真的有难度,听视频足足两次,花两个小时才搞懂,不容易啊!kmp算法(线性复杂度O(m+n)int Index_KMP(SString S,SString T,int pos){//返回子串T在主串S中第pos个字符的位置,若不存大,则函数值为0//其中,T非空,1i=pos;j=1;while(iif(j=0||S[i]==T[j]){++i;++原创 2012-02-05 16:33:06 · 317 阅读 · 0 评论