字符串匹配算法(二)

2180阅读 0评论2013-04-27 txgc_wm
分类:C/C++

一、后缀蛮力匹配算法

       后缀匹配是指模式串的比较从右到左,模式串的移动也是从左到右的匹配过程,经典的BM算法其实是对后缀蛮力匹配算法的改进。后缀蛮力匹配算法是最简单的一个。
        
       代码样例:
  1. static int suffix(const char *src, const char *des)
  2. {
  3.     int i, pos;
  4.     int len_s, len_d;

  5.     if(src == NULL || des == NULL)
  6.         return -1;

  7.     len_s = strlen(src);
  8.     len_d = strlen(des);

  9.     for(pos = 0; pos <= len_s - len_d; pos++) {
  10.         for(i = pos+len_d-1; i - pos > 0; i--) {
  11.             if(src[i] != des[i - pos])
  12.                 break;
  13.         }
  14.         
  15.         if((i - pos) == 0)
  16.             return pos;
  17.     }

  18.     return -1;
  19. }

二、BM算法

      BM算法所做的唯一的事情就是改进了以上代码中模式串每次移动一步的状况,而是根据已经匹配的后缀信息移动更多的距离。




上一篇:Bitmap算法
下一篇:Backtrack 5安装中文输入法 Scim