kmp字符串匹配过程
@龚良4492:数据结构 字符串 模式匹配问题 KMP算法 -
柏盼18938735031…… 你的程序本身思路没有错,但错在以下几点:1.在程序中有字符串S和T,你用S[0]代表字符串的长度,但S是字符串,S[0]是长度吗?2.在main函数中,你输入的S和T都是用gets(S)或gets(T),那么它们都是以下标0开头的,你应该要进行处理,使它以下标1作为开头(可以这样gets(&S[1]); 然后S[0] = strlen(&S[1]) + '0';在用S[0]作为长度的时候,把它从字符变成数字就行了).
@龚良4492:kmp算法什么意思? -
柏盼18938735031…… KMP算法之所以叫做KMP算法是因为这个算法是由三个人共同提出来的,就取三个人名字的首字母作为该算法的名字.其实KMP算法与BF算法的区别就在于KMP算法巧妙的消除了指针i的回溯问题,只需确定下次匹配j的位置即可,使...
@龚良4492:数据结构关于串的KMP算法的理解高手请进 -
柏盼18938735031…… 下面将主串设为T[n]..模式串(就是要在T中寻找的那个串)设为P[m]; 既然P的长度为m,则P就有m个状态,这些状态分别表示已经匹配了P中的多少个字符..打个比方——第K个状态代表已经匹配了P中的前K个字符,如果主串中下一个字...
@龚良4492:KMP算法求next数组的问题 -
柏盼18938735031…… 字符串如果是以0为下标的话next[7]是0,只有最后一位与第一位相等. 在第i个字符前面的i-1个字符里面, 从开头开始的1个字符与最后1个字符是否相等,若不是,则next[i]=0; 从开头开始的2个字符与最后2个字符是否相等,若不是,则next[i]=...
@龚良4492:KMP模式匹配算法 -
柏盼18938735031…… 这里有个相似的问题,也是我回答的,讲了原理http://zhidao.baidu.com/question/329386416.html如果你只要代码的话一个简单的代码#include <stdio.h>#include <string.h>int index_KMP(char *s,char *t,int pos);void get_next(char *t,int *);char s[10]=...
@龚良4492:C语言 KMP算法
柏盼18938735031…… 其基本思想是:每当匹配过程中出现字符串比较不等时,不需回溯i指针,而是利用已经得到的“部分匹配”结果将模式向右“滑动”尽可能远的一段距离后,继续进行比较. #include <stdio.h> #include <string.h> int index_KMP(char *s,char *t,...
@龚良4492:谁会KMP字符串的模糊匹配啊!!! -
柏盼18938735031…… int Index_KMP(SString S,SString T,int pos){ //利用模式串T的next函数求T在主串S中第pos个字符之后的位置的KMP算法. //其中,T非空,1≤pos≤StrLength(S). i=pos; j=1; while(i<=S[0]&&j<=T[0]){ if(j==0||S[i]==T[j]){++i;++j;}//继续比较后继字符...
@龚良4492:求KMP算法的C++代码 -
柏盼18938735031…… #include <iostream> #include <windows.h> //for PTSTR #include <strsafe.h> //for StringCchLength() StringCchCopy() class StringKMP{ public: StringKMP():m_str(NULL), m_nextval(NULL), m_size(0){} ~StringKMP(){ if(m_str != NULL){ free(m_str); ...
@龚良4492:求KMP算法中主串和模式串各是什么? -
柏盼18938735031…… 我当初学kmp的时候,有一个比较通俗的理解.首先,可以肯定的是,next是模式串的事,跟主串无关...模式串(对齐)abaabcac 下标序号分别为01234567 next[i]的值,为模式串0~i-1的前缀串中,前next[i]个字符,与后next[i]个字符,组成...
@龚良4492:串的应用kmp算法.求一个字符串在另一个字符串中第一次出现的位置. -
柏盼18938735031…… KMP.java 源代码为:package algorithm.kmp;/*** KMP算法的Java实现例子与测试、分析* @author 崔卫兵* @date 2009-3-25*/ public class KMP {/*** 对子串加以预处理,从而找到匹配失败时子串回退的位置* 找到匹配失败时的最合适的回退位置...
柏盼18938735031…… 你的程序本身思路没有错,但错在以下几点:1.在程序中有字符串S和T,你用S[0]代表字符串的长度,但S是字符串,S[0]是长度吗?2.在main函数中,你输入的S和T都是用gets(S)或gets(T),那么它们都是以下标0开头的,你应该要进行处理,使它以下标1作为开头(可以这样gets(&S[1]); 然后S[0] = strlen(&S[1]) + '0';在用S[0]作为长度的时候,把它从字符变成数字就行了).
@龚良4492:kmp算法什么意思? -
柏盼18938735031…… KMP算法之所以叫做KMP算法是因为这个算法是由三个人共同提出来的,就取三个人名字的首字母作为该算法的名字.其实KMP算法与BF算法的区别就在于KMP算法巧妙的消除了指针i的回溯问题,只需确定下次匹配j的位置即可,使...
@龚良4492:数据结构关于串的KMP算法的理解高手请进 -
柏盼18938735031…… 下面将主串设为T[n]..模式串(就是要在T中寻找的那个串)设为P[m]; 既然P的长度为m,则P就有m个状态,这些状态分别表示已经匹配了P中的多少个字符..打个比方——第K个状态代表已经匹配了P中的前K个字符,如果主串中下一个字...
@龚良4492:KMP算法求next数组的问题 -
柏盼18938735031…… 字符串如果是以0为下标的话next[7]是0,只有最后一位与第一位相等. 在第i个字符前面的i-1个字符里面, 从开头开始的1个字符与最后1个字符是否相等,若不是,则next[i]=0; 从开头开始的2个字符与最后2个字符是否相等,若不是,则next[i]=...
@龚良4492:KMP模式匹配算法 -
柏盼18938735031…… 这里有个相似的问题,也是我回答的,讲了原理http://zhidao.baidu.com/question/329386416.html如果你只要代码的话一个简单的代码#include <stdio.h>#include <string.h>int index_KMP(char *s,char *t,int pos);void get_next(char *t,int *);char s[10]=...
@龚良4492:C语言 KMP算法
柏盼18938735031…… 其基本思想是:每当匹配过程中出现字符串比较不等时,不需回溯i指针,而是利用已经得到的“部分匹配”结果将模式向右“滑动”尽可能远的一段距离后,继续进行比较. #include <stdio.h> #include <string.h> int index_KMP(char *s,char *t,...
@龚良4492:谁会KMP字符串的模糊匹配啊!!! -
柏盼18938735031…… int Index_KMP(SString S,SString T,int pos){ //利用模式串T的next函数求T在主串S中第pos个字符之后的位置的KMP算法. //其中,T非空,1≤pos≤StrLength(S). i=pos; j=1; while(i<=S[0]&&j<=T[0]){ if(j==0||S[i]==T[j]){++i;++j;}//继续比较后继字符...
@龚良4492:求KMP算法的C++代码 -
柏盼18938735031…… #include <iostream> #include <windows.h> //for PTSTR #include <strsafe.h> //for StringCchLength() StringCchCopy() class StringKMP{ public: StringKMP():m_str(NULL), m_nextval(NULL), m_size(0){} ~StringKMP(){ if(m_str != NULL){ free(m_str); ...
@龚良4492:求KMP算法中主串和模式串各是什么? -
柏盼18938735031…… 我当初学kmp的时候,有一个比较通俗的理解.首先,可以肯定的是,next是模式串的事,跟主串无关...模式串(对齐)abaabcac 下标序号分别为01234567 next[i]的值,为模式串0~i-1的前缀串中,前next[i]个字符,与后next[i]个字符,组成...
@龚良4492:串的应用kmp算法.求一个字符串在另一个字符串中第一次出现的位置. -
柏盼18938735031…… KMP.java 源代码为:package algorithm.kmp;/*** KMP算法的Java实现例子与测试、分析* @author 崔卫兵* @date 2009-3-25*/ public class KMP {/*** 对子串加以预处理,从而找到匹配失败时子串回退的位置* 找到匹配失败时的最合适的回退位置...