阅读下列说明和C代码,回答问题1至问题3,将解答写在对应栏内【说明】模式匹配是指

admin2022-08-02  53

问题 阅读下列说明和C代码,回答问题1至问题3,将解答写在对应栏内【说明】模式匹配是指给定主串t和子串s,在主串t中寻找子串s的过程,其中s称为模式。如果匹配成功,返回s在t中的位置,否则返回-1 。   KMP算法用next数组对匹配过程进行了优化。KMP算法的伪代码描述如下: 1.在串t和串s中,分别设比较的起始下标i=j=0。2.如果串t和串s都还有字符,则循环执行下列操作:(1)如果j=-l或者t=s[j],则将i和j分别加1,继续比较t和s的下一个字符;2)否则,将j向右滑动到next[j]的位置,即j =next[j]。 3.如果s中所有字符均已比较完毕,则返回匹配的起始位置(从1开始);否则返回-1.其中,next数组根据子串s求解。求解next数组的代码已由get_next函数给出。

选项

答案

解析 【问题1】(1):j大于ls; (2):t==s[j];  (3):get_next(next, s, ls);  j=next[j]; (4):i+1-ls;【问题2】(5)O(ls+lt)【问题3】(6)[-1, -1,1, -1, -1, 2, 0, 0](7)6
转载请注明原文地址:https://tihaiku.com/congyezige/2408435.html

最新回复(0)