yewanting
 

 

 

给定一个主串S(长度<=10^6)和一个模式T(长度<=10^5),要求在主串S中找出与模式T相匹配的子串,返回相匹配的子串中的第一个字符在主串S中出现的位置。

输入格式:

输入有两行: 第一行是主串S; 第二行是模式T.

输出格式:

输出相匹配的子串中的第一个字符在主串S中出现的位置。若匹配失败,输出0.

输入样例:

在这里给出一组输入。例如:

aaaaaba
ba

输出样例:

在这里给出相应的输出。例如:

6


解题思路:串的模式匹配有两种:一种是BF算法,一种是KMP算法
基于这道题给的数据,若用BF算法便会超时,所以我们这道题用KMP算法;
那么问题来了,KMP算法到底怎么用的;简单来讲,就是有两个步骤:
1、求模式串的next数组;
2、进行主串与模式串的匹配;
假设主串和模式串分别为

 

第一个问题:如何求next数组

分类:

技术点:

相关文章:

  • 2021-12-19
  • 2021-11-07
  • 2021-09-21
  • 2021-12-19
  • 2021-12-18
  • 2021-12-09
  • 2021-12-09
猜你喜欢
  • 2021-12-19
  • 2021-11-07
  • 2021-11-07
  • 2021-12-09
  • 2021-12-09
  • 2021-08-31
  • 2021-11-07
相关资源
相似解决方案