字符串经典算法
胆识与智慧
在探索中成长
展开
-
复习 manacher 算法
当初看 manacher 算法一片迷,今天再回来看,总算是看的懂什么意思了。可以参考博客 请点击这里manacher 有很巧妙的地方1. 把字符串变成奇数长度,如果原来是 abba , 就预处理成 #a#b#b#a# , 如果是 aba 就处理成 #a#b#a#,这样可以更方便地表示回文字符串的对称中心,因为原来的偶数长度的回文字符串对称中心无法表示,例如 abba , 对称中心在 bb 之...原创 2018-02-12 19:01:44 · 205 阅读 · 0 评论 -
复习 KMP 算法
KMP 算法是课本上就要求要学的(课本上没 扩展 KMP 和 Manacher ),可见 KMP 有多重要了 。给定两个字符串 a , b(序列也可以,不一定非得是字符串) , 求第一个串在第二个串中第一次出现的位置,或者出现的次数。如果暴力做,a 字符串在中途匹配失败,就从头开始,继续匹配,时间复杂度是 O( n * m ) 。KMP 算法就是一种让主串下标不减小的优化算法,时间复杂度 O( n...原创 2018-02-13 19:53:14 · 309 阅读 · 0 评论 -
拓展 KMP 学习
初识扩展 KMP , 看了挺久的。可以参考这篇博客 和 第二篇给定两个字符串 S , T (序列),求( S 的所有后缀 )和 T 的最长前缀。例如 S 是 abcde求 abcde 和 T 的最长前缀求 bcde 和 T 的最长前缀求 cde 和 T 的最长前缀求 de 和 T 的最长前缀求 e 和 T 的最长前缀如果最长前缀长度 = T.length() ,就是 KMP 了。我个人脑海里...原创 2018-02-14 19:16:32 · 195 阅读 · 0 评论