搜索某一段文字中,是否有一个目标子串。
这是串的一种重要操作,很多软件,若有“编辑”菜单项的话,则其中必有“查找”子菜单项。 首先,回忆一下串匹配(查找)的定义: INDEX (S, T, pos) 初始条件:串S和T存在,T是非空串,1≤pos≤StrLength(S)。 操作结果:若主串S中存在和串T值相同的子串, 则返回它在主串S中第pos个字符之后第一次出现的位置; 否则函数值为0。 如果想搜索某一段文字中的目标子串,最有效的方法是遍历文本中的所有字符来在每个位置检查其是否是目标。
模式匹配算法基本思想是:从目标串s="s0s1s2…sn-1"的第i个字符起与模式串t="t0t1t2…tm-1"进行比较。即从 j=0 起比较 s[i+j] 与 t[j],若相等,则在主串 s 中存在以i 为起始位置匹配成功的可能性,继续向后比较,直至与t串中最后一个字符相等为止。否则,改从s串第i个字符的下一个字符起重新开始进行下一轮的“匹配”,即将串t向后滑动一位(i增1,j退回至0),重新开始新一轮的匹配,直至串t中的每个字符依次和串s中的一个连续的字符序列相等,则称模式匹配成功,此时串t的第1个字符在串s中的位置就是t在s中的位置,否则模式匹配失败。
#include <stdio.h>
#include <string.h>
#define MaxSize 100 //串中最多字符个数
void DispStr(char *s);
int Index(char *s,char* t);
int main()
{
int