KMP算法是字符串模式匹配算法中较为高效的算法之一,其在某次子串匹配母串失败时并未回溯母串的指针而是将子串的指针移动到相应的位置。严蔚敏老师的书中详细描述了KMP算法,同时前面的例子中也描述了子串移动位置的数组实现的算法。前面你已经实现了子串移动的数组,现在就来利用该数组来实现KMP模式匹配。
下面是相应的算法:
图:KMP算法
Time Limit | $1$ 秒/Second(s) | Memory Limit | $512$ 兆字节/Megabyte(s) |
提交总数 | $46$ | 正确数量 | $29$ | "
裁判形式 | 标准裁判/Standard Judge | 我的状态 | 尚未尝试 |
难度 | 分类标签 | 字符串 |
KMP算法是字符串模式匹配算法中较为高效的算法之一,其在某次子串匹配母串失败时并未回溯母串的指针而是将子串的指针移动到相应的位置。严蔚敏老师的书中详细描述了KMP算法,同时前面的例子中也描述了子串移动位置的数组实现的算法。前面你已经实现了子串移动的数组,现在就来利用该数组来实现KMP模式匹配。
下面是相应的算法:
图:KMP算法
3组字符串,每组字符串占一行。每行包含由空格分隔的两个字符串,字符串仅由英文小写字母组成且长度不大于100。
每组数据输出1行,输出后一个字符串在前一个字符串中的位置,如果不匹配,则输出0。
string str
thisisalongstring isa
nosubstring subt
1
5
0
提示:
表示字符串的数据结构依然是字符数组。
总结:
KMP算法调用很简单,但难的是理解算法的思想。掌握算法的思想才能说是掌握算法。
本题记录 | 用 户(点击查看用户) | 运行号(点击购买题解) | 时 间 |
---|---|---|---|
算法最快[$0 $ms] | sqrjy | 607584 | 2020-07-17 11:15:09 |
内存最少[$944 $KB] | 范晋豪@信息与计算科学142 | 152695 | 2017-11-16 15:10:14 |
第一AC | 范晋豪@信息与计算科学142 | 152694 | 2017-11-16 15:10:14 |
第一挑战 | 范晋豪@信息与计算科学142 | 152694 | 2017-11-16 15:10:14 |
竞赛编号 | 竞赛名称 | 竞赛时间 | 访问比赛 |
---|---|---|---|
1300 | 《 2019春季ACM/NOI高级算法集训班》训练二:字符串 | 2019-03-09 14:00:00 | 请登录 |