Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4028727
  • 博文数量: 366
  • 博客积分: 9916
  • 博客等级: 中将
  • 技术积分: 7195
  • 用 户 组: 普通用户
  • 注册时间: 2011-05-29 23:27
个人简介

简单!

文章分类

全部博文(366)

文章存档

2013年(51)

2012年(269)

2011年(46)

分类: C/C++

2013-04-27 22:01:03

一、后缀蛮力匹配算法

       后缀匹配是指模式串的比较从右到左,模式串的移动也是从左到右的匹配过程,经典的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算法所做的唯一的事情就是改进了以上代码中模式串每次移动一步的状况,而是根据已经匹配的后缀信息移动更多的距离。




阅读(2160) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~