有关C++字符串KMP匹配问题
2014-11-09 11:19
393 查看
网址:http://zhidao.baidu.com/question/496978699945785084.html
为什么会这样?
#include <iostream> using namespace std; void GetNext(int longth,char T[],int (&next)[5]) { int k=-1,j=0; next[0]=-1; while(j<longth) { if(k==-1 || T[k]==T[j]) { ++k; ++j; next[j]=k; } else k=next[k]; } } int KMP(char S[],char T[],int next[5]) { int i=0,j=0; while((S[i]!='\0')&&(T[j]!='\0')) { if(S[i]==T[j]) { ++i; ++j; } else { j=next[j]; if(j==-1) { ++i; ++j; } } } if(T[j]=='\0') { cout<<"i="<<i<<endl; return (i-j+1); } else return 0; } int main() { char S[10]="abcabcacb"; char T[6]="abcac"; cout<<T[0]<<endl; int next[5]; GetNext(5,T,next); cout<<"T[0]="<<T[0]<<endl; //这里输出的是空格,为什么呢?应该输出是a for(int i=0;i<5;i++) cout<<"next["<<i<<"] = "<<next[i]<<endl; //这里i=0,j=0 跳过了上面while((S[i]!='\0')&&(T[j]!='\0'))循环 cout<<KMP(S,T,next)<<endl; return 0; }
为什么会这样?
相关文章推荐
- c/c++程序之_KMP字符串模式匹配详解(非常不错的详解)
- c/c++程序之_KMP字符串模式匹配详解
- 练习:KMP(字符串模式匹配问题)
- 与字符串有关的一些典型问题的C++解法
- 有关C/C++ else匹配问题
- C++ 用栈实现字符串中括号匹配问题()
- KMP匹配问题、求字符串的周期、Cyclic Nacklace
- KMP-字符串模式匹配(c++/python实现)
- 有关C++中常量字符串的一个小问题
- c/c++程序之_KMP字符串模式匹配详解
- c/c++程序之_KMP字符串模式匹配详解
- C/C++下scanf的%匹配以及过滤字符串问题
- KMP字符串模式匹配详解
- KMP字符串模式匹配详解
- 关于字符串的匹配搜索问题
- 有关字符串处理问题的原则
- KMP字符串模式匹配详解
- C++.net常见问题之二(字符串)
- 一个关于c++字符串处理和delete[]与delete差别的问题
- 字符串查找匹配问题