AcWing 831. KMP字符串

简介: AcWing 831. KMP字符串

活动 - AcWing

#include <iostream>
#include<cstring>
#include<algorithm>
 
using namespace std ;
const int N = 1e6 +10 ;
char s[N] , p[N] ;
int n , m ;
int ne[N] ;
int main(){
  cin >> n >> p + 1  >> m >> s + 1 ;
  for(int i = 2, j = 0 ; i <= n ; i ++){
    while(j && p[i] != p[j+1]) j = ne[j] ;
    if(p[i] == p[j+1]) j ++ ;
    ne[i] = j ;
  }  
  for(int i = 1,j = 0 ; i <= m ; i ++){
    while(j && s[i] != p[j+1]) j = ne[j] ;
    if(s[i] == p[j+1]) j ++ ;
    if(j == n ){
      printf("%d ", i - n) ; 
      j = ne[j] ;
    }
  }
  
  return 0 ;
}
目录
相关文章
|
算法
KMP算法(字符串匹配)(AcWing)
KMP算法(字符串匹配)(AcWing)
100 0
字符串中的KMP算法及其改进
字符串中的KMP算法及其改进
|
8月前
|
索引
《华为机试》——查找两个字符串a,b中的最长公共子串
《华为机试》——查找两个字符串a,b中的最长公共子串
|
8月前
|
分布式计算 测试技术 索引
【数位dp】【动态规划】【KMP】1397. 找到所有好字符串
【数位dp】【动态规划】【KMP】1397. 找到所有好字符串
|
8月前
|
算法 测试技术 C++
【KMP】【二分查找】【C++算法】100207. 找出数组中的美丽下标 II
【KMP】【二分查找】【C++算法】100207. 找出数组中的美丽下标 II
|
8月前
KMP算next数组(2023 _ 7 _ 23 )笔记
KMP算next数组(2023 _ 7 _ 23 )笔记
56 0
|
算法
看了这个你基本就会算kmp算法的next数组了
看了这个你基本就会算kmp算法的next数组了
|
算法 Linux
字符串-KMP算法
字符串-KMP算法
81 0
|
算法
【数据结构与算法】字符串2:KMP & 实现 strStr() & 重复的子字符串
【数据结构与算法】字符串2:KMP & 实现 strStr() & 重复的子字符串
95 0