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 ;
}
目录
相关文章
|
1月前
【LeetCode 19】541.反转字符串II
【LeetCode 19】541.反转字符串II
20 0
|
算法
KMP算法(字符串匹配)(AcWing)
KMP算法(字符串匹配)(AcWing)
91 0
|
6月前
|
分布式计算 测试技术 索引
【数位dp】【动态规划】【KMP】1397. 找到所有好字符串
【数位dp】【动态规划】【KMP】1397. 找到所有好字符串
|
6月前
|
Java C++ Python
leetcode-344:反转字符串
leetcode-344:反转字符串
37 1
|
6月前
KMP算next数组(2023 _ 7 _ 23 )笔记
KMP算next数组(2023 _ 7 _ 23 )笔记
43 0
leetcode 344 反转字符串
leetcode 344 反转字符串
79 0
leetcode 344 反转字符串
|
算法 API
LeetCode:剑指Offer 05. 替换空格 (字符串)
题目描述:请实现一个函数,把字符串 s 中的每个空格替换成"%20"。