字符串的简单模式匹配算法

字符串的模式匹配,就是通常见的IndexOf函数的实现过程。就是查询某个字符串T在另外一个字符串S中出现的位置
使用定长顺序存储结构的字符串可以简单的描述这个过程

先假定几个前提,设置几个类型
#define SIZE 80
typedef struct Chunk
{
char ch[SIZE];
struct Chunk *next;
}Chunk;
typedef struct
{
Chunk *head,*tail;//串的头尾指针
int curLen;//串的当前长度
}

//c,c++的字符串中0位置存储的是串的长度

匹配思想如下:
分别用指数i和j指示主串S和子串T的当前要比较的字符串的位置。基本思想是:从主串S的第pos个位置起和子串T的第一个字符进行比较,如果相等就继续逐个比较下一个字符;如果不相等从主串的下一个字符开始和子串的第一个字符进行比较。以此类推,直到子串T的每个字符都和主串S的一个连续的字符串相等,则称匹配成功。

函数代码
int IndexOf(SString s ,SString T,int pos)
//返回子串T在主串S第pos个字符后的位置,若不存在返回0
{
int i = pos; j = 1;
while(i <S[0] && j < T[0])
{
if(S[i] == T[j]) {++i;++j;}
else { i = i-j+2;j = 1 ;}
}
if(j > T[0] ) return j - T[0];
else return 0;
}

本文使用Blog_Backup未注册版本导出,请到soft.pt42.com注册。

转载于:https://www.cnblogs.com/zjypp/archive/2009/12/16/2319367.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值