P5410 【模板】扩展 KMP(Z 函数)
题目链接
P5410 【模板】扩展 KMP(Z 函数)
【模板】扩展 KMP(Z 函数)
题目描述
给定两个字符串 ,你要求出两个数组:
- 的 函数数组 ,即 与 的每一个后缀的 LCP 长度。
- 与 的每一个后缀的 LCP 长度数组 。
对于一个长度为 的数组 ,设其权值为 。
输入格式
两行两个字符串 。
输出格式
第一行一个整数,表示 的权值。
第二行一个整数,表示 的权值。
样例 #1
样例输入 #1
样例输出 #1
提示
样例解释:
,。
数据范围:
对于第一个测试点,。
对于第二个测试点,。
对于 的数据,,所有字符均为小写字母。
解题思路
z函数
z函数即exkmp
对于一个长度为 的字符串 ,定义函数 表示 和 的的最长公共前缀长度,注意后面算法求z函数时特定
算法流程:主要核心在求 时要利用前面 的信息,从 开始,对于每个 来说,都有一个匹配段 ,维护其中 最大的匹配段 ,如果 ,则有 ,则有 ,如果 ,则 ,否则令 ,暴力往后扩展;否则如果 ,则暴力求解
这个算法只能求解 本身的z函数,不妨令,从 的位置开始计算z函数,另外需要注意
复杂度分析:每次 while
时, 都至少增加一次,即 while
的总的执行次数为 ,则:
- 时间复杂度:
代码
__EOF__

本文作者:acwing_zyy
本文链接:https://www.cnblogs.com/zyyun/p/16973409.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/zyyun/p/16973409.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战