第八周项目五-计数的模式匹配

1.	/*        
2.	Copyright (c)2016,烟台大学计算机与控制工程学院        
3.	All rights reserved.        
4.	文件名称:第8周项目5 - 计数的模式匹配.cpp        
5.	作    者:朱建豪        
6.	完成日期:2016年10月27日        
7.	版 本 号:v1.0        
8.	        
9.	问题描述:采用顺序结构存储串,编写一个算法计算指定子串在一个字符串中出现的次数,  
10.	          如果该子串不出现则为0。  
11.	输入描述:两个字符串。  
12.	程序输出:子串出现的次数。  
13.	*/    
代码:
顺序串算法库
实现函数:
[cpp] view plain copy
 
   
1.	int str_count(SqString s,SqString t)    
2.	{    
3.	    int i=0,j=0,count=0;    
4.	    while (i<s.length && j<t.length)    
5.	    {    
6.	        if (s.data[i]==t.data[j])   //继续匹配下一个字符    
7.	        {    
8.	            i++;                //主串和子串依次匹配下一个字符    
9.	            j++;    
10.	        }    
11.	        else                    //主串、子串指针回溯重新开始下一次匹配    
12.	        {    
13.	            i=i-j+1;            //主串从下一个位置开始匹配    
14.	            j=0;                //子串从头开始匹配    
15.	        }    
16.	        //在BF算法中,没有下面的这一部分    
17.	        //这里增加一个判断,可以“捕捉”到已经产生的匹配    
18.	        if (j>=t.length)        //如果j已经达到了子串的长度,产生了一个匹配    
19.	        {    
20.	            count++;            //匹配次数加1    
21.	            i=i-j+1;            //主串从下一个位置开始继续匹配    
22.	            j=0;                //子串从头开始匹配    
23.	        }    
24.	    }    
25.	    return(count);    
26.	}    
main函数:
[cpp] view plain copy
 
   
1.	#include <stdio.h>    
2.	#include "sqString.h"    
3.	int main()    
4.	{    
5.	    SqString s,t;    
6.	    StrAssign(s,"accaccacacabcacbab");    
7.	    StrAssign(t,"accac");    
8.	    printf("s:");    
9.	    DispStr(s);    
10.	    printf("t:");    
11.	    DispStr(t);    
12.	    printf("%d\n",str_count(s,t));    
13.	    return 0;    
14.	}    

运行结果:


知识点总结:

b-f算法与kmp算法的实现与改进。

学习心得:

kmp算法填补了b-f算法的不足,更加便于解答问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值