Advertisement

字符串模式匹配

阅读量:

编写程序,用于确定模式串p在主串s中首次出现的起始位置,若p未在s中出现则返回-1。字符串的索引从0开始。
输入格式:

输入包含两行,第一行为主串s,第二行为模式串p。主串与模式串的长度均不超过100000。
输出格式:

输出包含两行,第一行由多个整数组成,表示模式串p的失败函数值,每个数值后接一个空格;第二行输出一个整数,表示p在s中首次出现的位置,若未找到则输出-1。
输入样例:

在此处提供一组输入示例。例如:

qwerabcabhlk
abcab
结尾无空行

输出样例:

在此处提供相应的输出示例。例如:

-1 -1 -1 0 1
4
思路:模式串p的失败函数值即为KMP算法中的next[]数组元素值。要确定p在s中首次出现的位置,可直接调用string库中的.find函数

复制代码
    #include <bits/stdc++.h>
    using namespace std;
    void get_next(string T,int next[]) //求解next值表函数  (此函数运用了递归原理)注:要掌握手动求next数组方法:运用前缀字符和后缀字符最大相等个数 
    { int i=0,j=-1;                  //i是上面假主串变量  j为下面假子串变量 

全部评论 (0)

还没有任何评论哟~