码迷,mamicode.com
首页 > 编程语言 > 详细

字符串匹配算法

时间:2014-11-26 20:39:13      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   sp   div   log   ad   ef   amp   

1.BF算法

    算法复杂度O(m*n)

int BFMatch(string s,string p){
   int i=0,j=0;
   while(i<s.length()){
        j=0;
      while(s[i]==p[j]&&j<p.length()){//小心字符串结尾都有个\0结束符,如果刚好匹配到结尾,没加限定j会比真实值大1!
        i++;
        j++;
      }
      if(j==p.length())
        return i-j;
      else
        i=i-j+1;
   }
   return -1;
}

2.KMP匹配算法

   算法复杂度O(m+n)

int getnext(string p,int *next){
    int i=0,j=-1;
    next[0]=-1;
    while(i<p.length()-1){//小心i越界
     if(j==-1||p[i]==p[j]){
        ++j;
        ++i;
        next[i]=j;
     }
     else
        j=next[j];
    }
}
int KMPMatch(string s,string p){
    int next[100],i=0,j=0;
    getnext(p,next);
   while(i<s.length()){
       if(j==-1||s[i]==p[j]){
        ++i;
        ++j;
       }
       else
        j=next[j];
       if(j==p.length())
        return i-p.length();
    }
    return -1;
}

字符串匹配算法

标签:style   blog   color   sp   div   log   ad   ef   amp   

原文地址:http://www.cnblogs.com/wrj2014/p/4124748.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!