设串长为n,模式串长为m,则KMP算法所需的附加空间为()。
KMP算法的最大特点是指示主串的指针不需要回溯。
在KMP模式匹配算法中,需要求解模式串p的next函数值,其定义如下(其中,j为模式串字符的序号)。对于模式串"abaabaca",其next函数值序列为()https://assets.asklib.com/psource/201609091115239111.jpg
函数实现串的模式匹配算法,请在空格处将算法补充完整。intindex_bf(sqstring*s,sqstring*t,intstart){inti=start-1,j=0;while(ilen&&jlen)if(s->data[i]==t->data[j]){i++;j++;}else{i=();j=0;}if(j>=t->len)return();elsereturn-1;}}/*listDelete*/
朴素模式匹配算法,算法运行时间为O(m*n)。
7. 模式串 P=‘abaabcac'的next函数值序列为01122312。
模式串p=abaabcac的next函数值为 ,nextval函数值为 。
KMP算法的特点是在模式匹配时指示主串的指针不变
若目标串的长度为n,模式串的长度为[n/3],则执行BF模式匹配算法时,在最坏情况下的时间复杂度是( )
设模式串的长度为m,目标串的长度为n,当n≈m且处理只匹配一次的模式时,朴素的匹配(即子串定位函数)算法所花的时间代价可能会更为节省。( )
确定串T在串S中首次出现的位置的操作称为串的模式匹配
假设允许模式串p中可以出现能与任意字符串(包括长度为0的空串)匹配的回隙字符 ,如模式串abbac
假设某个单向循环链表的长度大于1,且表中既无头结点也无头指针。已知s为指向链表中某个结点的指针,试编写算法在链表中删除指针s所指结点的前驱结点。 StatusListDelete_CL(LinkList &S) { LinkList p,q; if(S==S->next)return ERROR; q=S; p=S->next; while(){ q=p; p=p->next; } q->next=p->next; free(p); return OK; }
布鲁特-福斯算法从主串的第一个字符起与模式串的第一个字符进行比较,若相等,则继续逐字符进行后续比较,否则从主串第二个字符开始,直至模式串中每个字符依次和主串中一个连续的字符序列相等为止,此时称匹配成功()
【判断题】设模式串的长度为m,目标串的长度为n,当n≈m且处理只匹配一次的模式时,朴素的匹配(即子串定位函数)算法所花的时间代价可能会更为节省。
子串的()操作通常称为串的模式匹配
设正文串长度为n,模式串长度为m,则模式匹配的KMP算法的时间复杂度为()。
27、设模式串(子串)的长度为m,目标串(主串)的长度为n。当n≈m且处理只匹配一次的模式时,简单模式匹配(BF)算法所花费的时间代价也可能会比KMP算法更节省。
函数实现串的模式匹配算法,请在空格处将算法补充完整。intindex_bf(sqstring*s,sqstring*t,intstart){inti=start-1,j=0;while(i<s->len&&j<t->len)if(s->data[i]==t->data[j]){i++;j++;}else{i=();j=0;}if(j>=t->len)return();elsereturn-1;}}/*listDelete*/</t-></s->
什么是数据结构?数据结构的概念包括哪三部分? 什么是算法?如何描述算法?怎样衡量算法的性能? Node类能否声明以下深拷贝构造方法?为什么?Public Node(Node<T> p ){this(p.data,p.next)} 什么是串?串和线性表的概念上有何差别?串操作的主要特点有哪些? Java语言有哪几种字符串类?存储结构分别是怎样的?
已知字符串S为“abaabaabacacaabaabcc”,模式串t为“abaabc”,采用KMP算法进行匹配,第一次出现“失配”(s[i]!=t[i])时,i=j=5,则下次开始匹配时,i和j的值分别是()
9、对于KMP算法,在模式匹配时指示主串匹配位置的指针() 。
19、在KMP算法中,用next 数组存放模式串的部分匹配信息﹐模式串位j与目标串i比较,如果两字符相等时,则j的位移方式是
7、下面的算法功能是逆置单链表,在 处填上合适的语句。 void Inversion(Link L) { p=L->next; L->next=null; while p { q=p; p=p->next; L->next=q; } }