目录
问题
输入患者基因与病毒基因序列,测试目标是否感染病毒
重难点
病毒为环状结构,以输入baa为例,baa对应3种结构baa,aab,aba。感染每一种都算阳性,显示YES。
测试样例及输出
思路
与bf算法相同,先将病毒的字符串翻倍,头指针从第一位开始,每次右移一位,取n次(n为病毒字符串长度)长度为n的字符串(准确的说是改变指针,而没有切割串)逐一与患者基因序列比对。
在kmp算法中,尝试过不分解模式串,直接计算整个的next数组,并放入kmp中计算。发现虽然头指针向后移动了,由于前面的数字还在,next数组是以原数组计算的,会使J=next[j]导向错误。所以在这里kmp必须将字符串掐头去尾。
将模式串分解为长度等于病毒长度的字符串(切割第一段的字符串),在kmp函数中,匹配操作之前,调用getnext求每