- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
si+2且si+2≠c,因此,搜索的下一步应该是对p的首字符和si+2进行比拟。这里无需比拟p的首字符和si+1
以此类推,假定出现了p前4个字母的匹配,然后失配,即si+4≠b
s=-abca???…?
p=’abcabcacab’
通过观察可以看到,匹配搜索可以继续把si+4与第二个字符b进行比拟。这是在把模式p向右滑动时,发生局部
=p
f
例如: 对于模式p=’abcabcacab’,有:
j 0 1 2 3 4 5 6 7 8 9
p a b c a b c a c a b
f -1 -1 -1 0 1 2 3 -1 0 1
si-j…si-1=p0p1…pj-1且si≠pj
int str_pmatch(char *s, char *p, char* failure)
{
if (NULL == s || NULL == p || NULL == failure)
{
return -1;
}
int lens = strlen(s);
int lenp = strlen(p);
int i = 0, j = 0;
while (i lens j lenp)
{
if (s[i] == p[j])
{
i++;
j++;
}
else if (j == 0)
{
i++;
}
else
{
j = failure[j - 1] + 1;
}
}
free(failure);
return ((j == lenp) ? (i - lenp) : -1);
}
f
注意:f1j
(这个表达形式如何证明??)
void str_fail(char *pat, char* failure)
{
int n = strlen(pat);
failure[0] = -1;
for (int j = 1; j n; j++)
{
int i = failure[j - 1];
while (pat[j] != pat[i + 1] i = 0)
{
i = failure[i];
}
if (pat[j] == pat[i + 1])
failure[j] = i + 1;
else
failure[j] = -1;
}
}
您可能关注的文档
- 储罐开罐检修安全操作规程.doc
- KET便条写作真题解析.docx
- KET开放性完型填空.doc
- KTV夜总会订房技巧.docx
- KTV装修规范标准.docx
- LabVIEW-的功能及特点.doc
- Landsat-TM-辐射定标和大气校正步骤.docx
- LB培养基怎样配制.doc
- LDM配置详细过程.docx
- LED灯具行业几种常见的认证.docx
- 四川省德阳市罗江中学2025届高三考前热身化学试卷含解析.doc
- 山东省枣庄现代实验学校2025届高三下学期第五次调研考试化学试题含解析.doc
- 吉林省长春市十一高中等九校教育联盟2025届高三一诊考试生物试卷含解析.doc
- 2025届江苏省盐城市伍佑中学高考仿真模拟化学试卷含解析.doc
- 2025届广西贺州中学高考冲刺押题(最后一卷)生物试卷含解析.doc
- 安徽省池州市贵池区2025届高三第一次模拟考试生物试卷含解析.doc
- 宁夏银川一中2025届高三(最后冲刺)化学试卷含解析.doc
- 广东省广州市增城区四校联考2025届高考压轴卷化学试卷含解析.doc
- 2025届邯郸市第一中学高考生物必刷试卷含解析.doc
- 2025届安徽省安庆市石化第一中学高考仿真卷化学试卷含解析.doc
文档评论(0)