题目说明:使用KMP算法,在一个字符串s中查找子串t出现次数。字符串的匹配忽略大小写。字符串长度不超过1000。
如,s=“abcabcaBcd”,t=“abcaB”。这里认为t在s中出现2次。
注意:题目中已经给出模式串t的next数组值。
输入格式:
第一行输入字符串s
第二行输入字符串t
第三行给出串t的next数组值。包括next[0]~next[t.length-1]
输出格式:
第一行输出串t在s中出现的次数。
接下来每行输出串t在s中出现的位置序号(逻辑序号,从1开始计数)。
输入样例:
Abcabcabcd
abcab
-1 0 0 0 1
输出样例:
2
1
4
实现代码:
#include<iostream>
#include<string.h>
using namespace std;
void KmpSearch(char* s, char* p, int* next,int& count,int a[]