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

字符串模式匹配(KMP)

题目描述:
给定主串 s 和模式串 p,编写程序输出 p 在 s 中出现的首位置,若 p 不在 s 中则输出−1。字符串下标从0开始。

输入格式:
输入为2行,第1行主串 s,第2行为模式串 p。主串和模式串长度不超过100000。

输出格式:
输出为2行,第1行为若干整数,表示模式串 p 的失败函数值(next数组),每个整数后一个空格;第2行为一个整数,表示 p 在 s 中出现的首位置,若 p 不在 s 中则输出−1。

输入样例:
qwerabcabhlk
abcab

输出样例:
-1 -1 -1 0 1
4


#include <bits/stdc++.h> using namespace std; const int n=1e5+5; int nxt[n]; void getnext(string p,int next[]) { next[0]=-1; int i=1;//开始比较的指针 int len=0;//前后缀字符相同的长度 while(i<p.length()) { if(p[i]==p[len])//前后缀匹配成功 { len++; next[i++]=len-1; } else if(len==0)//完全没匹配 next[i++]=-1; else len=next[len-1]+1;//看上一个,有匹配过的 } } int kmp(string p,string s,int next[]) { getnext(p,next); int i=0,j=0; while(i<s.length()) { if(s[i]==p[j]) { i++; j++; } else if(j>0) j=next[j-1]+1;//不匹配,回退 else i++;//第一个就不匹配 if(j==p.length()) return i-j; } return -1; } int main() { string s,p; cin>>s>>p; int ans=kmp(p,s,nxt); for(int i=0;i<p.length();i++) cout<<nxt[i]<<" "; cout<<endl<<ans; return 0; }
http://www.jsqmd.com/news/1317021/

相关文章:

  • 英硕开题报告辅导避坑指南,新手必看!
  • Synology HDD db深度解析:突破群晖硬盘兼容性限制的完整技术方案
  • ESPHome与Espectre在XIAO ESP32上的部署与智能家居开发实践
  • AI副业技能清单(2024实战验证版):仅限前1000名开发者获取的7层能力模型
  • 构建抗脆弱的AI开发环境:从云端故障到本地化备份实战
  • 腾达 Ax1806 开启 telnet
  • 老显卡焕新:GeForce 920M适配PyTorch GPU环境的完整指南
  • 鸿蒙分布式事件总线高级设计:发布订阅/延迟解耦/优先级队列/跨设备事件一致性保障
  • 人群计数行人检测数据集分享(适用于YOLO系列深度学习检测任务)
  • Microsoft glTF-SDK 深度解析:如何高效处理3D资产序列化与反序列化实战指南
  • Java 23 种设计模式:从踩坑到精通 | 番外:命令模式 —— 仓储设备控制实战
  • 定点数与浮点数深度解析:从IEEE 754到Q格式的工程实践
  • 算法面试——字符串:反转、最长回文、字符串解码
  • 2026 年更新:嘉兴可靠的纤维增强水泥压力板生产厂家怎么联系,这种装修材料凭什么成为工装和家装的隐形刚需?-欧拉德建材 - 鉴选官
  • 微服务拆完才是开始:Saga、Outbox 与渐进迁移方案
  • HarmonyOS ArkTS API 24+ 实战:登录后用户信息如何全局流转,token 存哪里、页面怎么拿当前用户
  • deepseek-v4-flash 正式版 68 元免费体验
  • 嵌入式处理器流水线原理:从基础概念到性能优化
  • Seata分布式事务:原理、实践与性能优化
  • 安卓模拟器本地OCR集成方案:基于PaddleOCR与按键精灵的自动化脚本优化
  • 游戏玩家30天无痛掌握Python:从零到实战项目全攻略
  • 2026年8月自贡市移动200M单宽带申请避坑与实测攻略 - 找卡家园
  • 2026 年当下,汕头比较好的新能源电车托运企业找哪家,把车远迁老家居然比开回去还划算?这玩意儿的门道我居然现在才懂!-盛世华航轿车托运 - 企业推荐官【认证官方】
  • 如何彻底掌控你的微信聊天记录:三步实现个人数据备份与管理的终极方案
  • 2026广东纤维素抑尘剂厂家移动电话汇总 - 品牌排行榜
  • Unity协程全解析:从原理到实战,掌握异步编程核心技能
  • Modbus RTU协议深度解析:从通信原理到工业现场实战应用
  • 算法面试——深度优先搜索:全排列、组合总和、岛屿数量
  • 舒尔补:矩阵降维与条件化的核心工具及其应用
  • Linux 权限管理——chmod、chown、sudo、ACL