于是, 就有了manacher算法. manacher代码短、效率高(O(n))、不区分奇偶回文,非常完美的算法! manacher可以预处理出字符串每个索引处的最大回文半径....如果这个回文子串在既有的pam中不存在, 我们就新增, 如果存在就不新增....注意到fail的作用, 它完全类似于【2】中的slink——正是因为fail这个大杀器, 所以我们的pam的构造算法才是O(n)的,很优秀的构造算法....仅仅代表字符串s的索引下标. pam的板子中, 字符串的索引下标从1开始而不是从0开始
lz[i]的意思是s[1,...,i]的最长回文后缀的长度....,i]的最长回文后缀对应节点u(即下面47行的insert方法中的u))对应回文子串的所有不同
回文后缀的个数(包括自身), size是当前pam节点表示的回文子串在s中出现的次数.