字符串模式匹配算法
2009-10-18 23:01
387 查看
题目:给定两个字符串S和T,判断T是否在S中出现
======================
思路如下(引用),采用最简单的匹配方法:
在串S=”abcabcabdabba”中查找T=” abcabd”(我们可以假设从下标0开始):先是比较S[0]和T[0]是否相等,然后比较S[1] 和T[1]是否相等…我们发现一直比较到S[5] 和T[5]才不等。如图:
当这样一个失配发生时,T下标必须回溯到开始,S下标回溯的长度与T相同,然后S下标增1,然后再次比较。如图:
这次立刻发生了失配,T下标又回溯到开始,S下标增1,然后再次比较。如图:
这次立刻发生了失配,T下标又回溯到开始,S下标增1,然后再次比较。如图:
又一次发生了失配,所以T下标又回溯到开始,S下标增1,然后再次比较。这次T中的所有字符都和S中相应的字符匹配了。函数返回T在S中的起始下标3。如图:
======================
思路如下(引用),采用最简单的匹配方法:
在串S=”abcabcabdabba”中查找T=” abcabd”(我们可以假设从下标0开始):先是比较S[0]和T[0]是否相等,然后比较S[1] 和T[1]是否相等…我们发现一直比较到S[5] 和T[5]才不等。如图:
当这样一个失配发生时,T下标必须回溯到开始,S下标回溯的长度与T相同,然后S下标增1,然后再次比较。如图:
这次立刻发生了失配,T下标又回溯到开始,S下标增1,然后再次比较。如图:
这次立刻发生了失配,T下标又回溯到开始,S下标增1,然后再次比较。如图:
又一次发生了失配,所以T下标又回溯到开始,S下标增1,然后再次比较。这次T中的所有字符都和S中相应的字符匹配了。函数返回T在S中的起始下标3。如图:
/* Name:字幕串模式匹配 Author:Dualeak Blog:http://blog.csdn.net/Dualeak Date:2009-10-18 Description:判断字符串S是否包含字符串T */ #include "stdio.h" int main(void) { char S[]={"abcabcabdabba"}, T[]={"abcabd"}; int sumS=sizeof(S)-2, /*数组S的下标上限*/ sumT=sizeof(T)-2, /*/*数组T的下标上限*/ border=sumS-sumT; /*循环停止标志*/ int i=0, /*S的下标*/ j=0, /*T的下标*/ k=-1; /*k=-1表示字符串S未包含字符串T*/ //若i>border(即sumS-i>sumT)则循环无意义(因为接下来需要判断的S的长度已经小于T的长度,不可能再包含T). //若-1 != k,则表示已确定S包含T,则循环终止. for(i=0;(i <= border) && (-1 == k);i++){ //若S[i+j] != T[j],即当前S的一个字符与当前T的一个字符不匹配,或者-1 != k,则返回上层循环 for(j=0;(S[i+j] == T[j]) && (-1 == k);j++){ //判断是否到了字符串T的末尾,若是到了末尾,则表示整串全部匹配,k=i if(j == sumT) k=i; } } if(-1 != k) printf("yes/n"); else printf("no/n"); return 0; }
相关文章推荐
- KMP字符串模式匹配算法
- java实现字符串的一般和KMP模式匹配算法
- 字符串模式匹配算法之一:朴素模式匹配算法
- 朴素的字符串模式匹配算法
- 字符串多模式精确匹配(脏字/敏感词汇搜索算法)——TTMP算法 之B模式概述
- 字符串多模式精确匹配(脏字/敏感词汇/关键字过滤算法)——TTMP算法 之实战F模式
- Java数据结构之字符串模式匹配算法---Brute-Force算法
- 算法 字符串模式匹配KMP
- 字符串多模式精确匹配(脏字/敏感词汇搜索算法)——TTMP算法 之理论(转)
- 算法(四)KMP字符串模式匹配详解
- 字符串模式匹配算法——BM、Horspool、Sunday、KMP、KR、AC算法一网打尽
- KMP字符串模式匹配算法最详解
- 字符串的匹配模式:朴素的模式匹配算法(BF算法)
- 经典的字符串模式匹配算法KMP算法
- KMP字符串模式匹配算法实现
- 字符串查找之模式匹配算法
- 字符串模式匹配算法——BM、Horspool、Sunday、KMP、KR、AC算法
- 字符串多模式精确匹配(脏字/敏感词汇搜索算法)——TTMP算法 之B模式概述
- 字符串模式匹配算法——BM、Horspool、Sunday、KMP、KR、AC算法一网打尽
- 字符串--KMP模式匹配算法