当前位置: 首页 > news >正文

【洛谷】3375 KMP字符串匹配

【算法】KMP

【题解】【算法】字符串

#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int maxn=1000010,maxm=1010;
char A[maxn],B[maxm];
int p[maxm],n,m;
int main()
{
    scanf("%s%s",A+1,B+1);
    n=strlen(A+1);m=strlen(B+1);
    p[1]=0;
    int j=0;
    for(int i=2;i<=m;i++)
     {
         while(j>0&&B[j+1]!=B[i])j=p[j];
         if(B[j+1]==B[i])j++;
         p[i]=j;
     }
    j=0;
    for(int i=1;i<=n;i++)
     {
         while(j>0&&B[j+1]!=A[i])j=p[j];
         if(B[j+1]==A[i])j++;
         if(j==m)
          {
              printf("%d\n",i-j+1);
              j=p[j];
         }
     }
    for(int i=1;i<m;i++)printf("%d ",p[i]);
    printf("%d",p[m]);
    return 0;
}
View Code

 

转载于:https://www.cnblogs.com/onioncyc/p/6618911.html

相关文章:

  • 移动无标题(边框)窗体
  • mysql创建数据表时如何判断是否已经存在?
  • c#使用多个远程桌面连接
  • [存档]名词解释
  • 单链表中一个插入操作的分析
  • js如何打印object对象
  • 使用Apache CXF创建简单Web Service
  • java中Keytool的使用总结 (加密 密钥(key)和证书(certificates))
  • 又到母亲节
  • Java学习的好群,极力推荐!
  • linux svn 客户端基本使用命令
  • 发行盗版windows的组织为何热衷于更改系统设置
  • 2017年PHP程序员未来路在何方
  • xml操作工具类
  • xml报文理解 -----转-----
  • 实现windows 窗体的自己画,网上摘抄的,学习了
  • CentOS6 编译安装 redis-3.2.3
  • css选择器
  • Docker 1.12实践:Docker Service、Stack与分布式应用捆绑包
  • GitUp, 你不可错过的秀外慧中的git工具
  • JavaScript 基本功--面试宝典
  • JSONP原理
  • node-glob通配符
  • 基于Android乐音识别(2)
  • 技术攻略】php设计模式(一):简介及创建型模式
  • 前端路由实现-history
  • 浅谈web中前端模板引擎的使用
  • 算法-图和图算法
  • 消息队列系列二(IOT中消息队列的应用)
  • 一天一个设计模式之JS实现——适配器模式
  • 怎样选择前端框架
  • $.ajax()参数及用法
  • (1)常见O(n^2)排序算法解析
  • (C)一些题4
  • (超简单)构建高可用网络应用:使用Nginx进行负载均衡与健康检查
  • (分享)自己整理的一些简单awk实用语句
  • (附源码)计算机毕业设计SSM疫情居家隔离服务系统
  • (六)c52学习之旅-独立按键
  • (转) SpringBoot:使用spring-boot-devtools进行热部署以及不生效的问题解决
  • (转载)跟我一起学习VIM - The Life Changing Editor
  • (转载)深入super,看Python如何解决钻石继承难题
  • (轉貼) VS2005 快捷键 (初級) (.NET) (Visual Studio)
  • ***汇编语言 实验16 编写包含多个功能子程序的中断例程
  • ..thread“main“ com.fasterxml.jackson.databind.JsonMappingException: Jackson version is too old 2.3.1
  • .NET Core工程编译事件$(TargetDir)变量为空引发的思考
  • .Net FrameWork总结
  • .NET HttpWebRequest、WebClient、HttpClient
  • .net 生成二级域名
  • .NET/C# 项目如何优雅地设置条件编译符号?
  • .NET高级面试指南专题十一【 设计模式介绍,为什么要用设计模式】
  • .NET命名规范和开发约定
  • .NET学习教程二——.net基础定义+VS常用设置
  • @angular/cli项目构建--http(2)
  • @LoadBalanced 和 @RefreshScope 同时使用,负载均衡失效分析
  • @ModelAttribute注解使用