zoukankan      html  css  js  c++  java
  • kmp 洛谷 P3375 【模板】KMP字符串匹配

    地址 https://www.luogu.com.cn/problem/P3375

    解法
    KMP模板

    #include<iostream>
    #include<cstring>
    
    using namespace std;
    const int N = 1000010, M = 1000010;
    
    int n, m;
    int ne[N];
    char s[M], p[N];
    
    int main()
    {
    	std::cin >> (s + 1) >> (p + 1);
    	int m = strlen(s+1);
    	int n = strlen(p + 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)
    		{
    			std::cout << i - n + 1 << std::endl;
    			j = ne[j];
    		}
    	}
    	for (int i = 1; i <= n; i++) {
    		std::cout << ne[i] << " ";  
    	}
    
    	return 0;
    }
    

    我的视频题解空间

    作 者: itdef
    欢迎转帖 请保持文本完整并注明出处
    技术博客 http://www.cnblogs.com/itdef/
    B站算法视频题解
    https://space.bilibili.com/18508846
    qq 151435887
    gitee https://gitee.com/def/
    欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
    如果觉得不错,欢迎点赞,你的鼓励就是我的动力
    阿里打赏 微信打赏
  • 相关阅读:
    各种编译器
    C99特性
    动态内存分配
    MDK C++编程说明
    C++类的大小计算
    WPF DataGrid添加编号列
    WPF实现打印用户界面功能
    WPF DataGrid 导出Excel
    知识点总结
    Winfrom控件使用
  • 原文地址:https://www.cnblogs.com/itdef/p/15316556.html
Copyright © 2011-2022 走看看