- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
字符串循环最小表示
如果所有的后缀按照suffix(sa[1]), suffix(sa[2]), suffix(sa[3]), …… ,suffix(sa[n])的顺序计算,不难 发现,对于每一次新加进来的后缀suffix(sa[k]),它 将产生n-sa[k]+1 个新的前缀。但是其中有 height[k]个是和前面的字符串的前缀是相同的。所 以实际增加的新子串数目为n-sa[k]+1- height[k]个 不同的子串。 给定一个字符串,求最长回文子串。 枚举每一位,然后计算以这个字符为中心的最 长回文子串。奇偶两种情况都可以转化为求一 个后缀和一个反过来写的后缀的最长公共前缀。 具体的做法是:将整个字符串反过来写在原字 符串后面,中间用一个特殊的字符隔开。这样 就把问题变为了求这个新的字符串的某两个后 缀的最长公共前缀。 给定n 个字符串,求出现在不小于k 个字符串中的最长子串。 将n 个字符串连起来,中间用不相同的且没有出现在字符串中的字符隔开, 求后缀数组。然后二分答案将后缀分成若干组,判断每组的后缀是否出现在不小于k 个的原串中 一维:在一个串中找另一个串第一次出现的位置 二维:在一个字符矩阵中找另一个字符矩阵第一次出现的位置 如果扩展到k(k≤10)维呢? 一维的情况:Rabin-Karp算法 c a c a b a b c a b a c a b O(NM)? 一维的情况:Rabin-Karp算法 a b c × × × 1 p p2 a b c × × × 1 p p2 求和 × × p p2 × p3 a × 1 O(NM)? O(N+M)! [ ] q mod i X p M i X S pf S f M i i ] [ ] [ ) ( ) ( 1 - + + = + q mod ú ? ù ê ? é p i S S f S len i i S len ] [ ) ( ) ( 1 ) ( = ? = - 扩展到二维的情况 a b a a c b b c a b a c ×p2 ×p ×p2 ×p2 ×p2 ×p ×p ×p ×q3 q3 q3 q2 q2 q q ×q2 ×q 扩展到二维的情况 × p3 × p 1 × × p2 × p2 p × × p3 × p4 × 1 更高维的情况…… Hash次数 效率与准确性 给定一个字符串,求至少出现k 次的最长重复子串,这k 个子串可以重叠。 有两条环状的项链,每条项链上各有N个多种颜色的珍珠,相同颜色的珍珠,被视为相同。 问题:判断两条项链是否相同。 简单分析:由于项链是环状的,因此循环以后的项链被视为相同的,如图的两条项链就是一样的。 给定两个长度相等的字符串,|s1|=|s2|, 判断它们是否是循环同构的。 可转化为以S1+S1为母串,S2为模式串的匹配问题 如M(‘bbbaab’)=4 设函数M(s)返回值意义为: 从s的第M(s)个字符引起的s的一个循环表示是s的最小表示。 若有多个值,则返回最小的一个。 现在换一种思路: s=‘b b b a a b’ 现在换一种思路: 1 … |s1| s1: 1 … |s2| s2: u: w: 1 … |s1| |s1|+1 … 2*|s1| 1 … |s2| |s2|+1 … 2*|s2| 设u=s1+s1,w=s2+s2并设指针i,j指向u,w第一个字符 u: 1 … M(s1) … … 2*|s1| w: 1 … … M(s2) … 2*|s2| i j 现在换一种思路: 如果s1和s2是循环同构的,那么当i,j分别指向M(s1),M(s2)时,一定可以得到u[i→i+|s1|-1]=w[j→j+|s2|-1],迅速输出正确解。 |s1| |s2| 现在换一种思路: 同样s1和s2循环同构时,当i,j分别满足 i≤M(s1),j≤M(s2)时, 两指针仍有机会达到i=M(s1),j=M(s2)这个状态。 问题转化成,两指针分别向后滑动比较,如果比较失败,如何正确的滑动指针,新指针i’,j’仍然满足 i’≤M(s1),j’≤M(s2) 设指针i,j分别向后滑动k个位置后比较失败(k≥0),即有 u[i+k]≠w[j+k] 1 … i … … … u: i+k i+k+1 … |s1|… 1 … w: j … … … j+k j+k+1 … |s2|… 大于 当i≤x≤i+k时,我们来研究s1(x-1)。 x 设u[i+k]w[j+k],同理可以讨论u[i+k]w[j+k]的情况。 因为u[x]在u[i]后(x-i)个位置, 对应的可以找到在w[j]后(x-i)个位置的w[j+(x-i)], 1 … i … x … u: i+k i+k+1 … |s1|… 1 … w: j
您可能关注的文档
最近下载
- 不锈钢中合金元素的作用及其研究现状.pdf VIP
- 材料力学性能对高温水环境中镍基合金裂尖应力分布的影响.pdf VIP
- 材料性能对铝合金FSW接头组织与力学性能的影响.pdf VIP
- 注册会计师-会计-基础练习题-第十一章借款费用-第一节借款费用概述.pdf VIP
- 注册会计师-会计-强化练习题-第十一章借款费用.docx VIP
- 注册会计师-会计-高频考点题-第十一章借款费用.docx VIP
- 北师大版(2024)小学数学一年级上册《淘气的一天》教案及反思.pdf VIP
- 漂亮的excel数据统计图表8公司人力资源可视化看板1.docx VIP
- 苏教版(2024)二年级数学上册课件 第5单元 练习九.pptx VIP
- (高清版)B/T 13813-2023 煤矿用金属材料摩擦火花安全性试验方法和判定规则.pdf VIP
原创力文档


文档评论(0)