Manacher算法的应用
Manacher算法是大家常用的,用来求回文串系列问题的算法 具体算法过程,我不多说,不知道的,可以看: Manacher算法详述 通过Manacher算法之后,我们会得到几个比较重要的信息: 首先,就是这个字符串有无回文子串,以及最长的回文子串的长度。 其次,就是以某一点为中心的回文半径,也就是 p 数组。 出题人比较喜欢在这个上面做文章 题型一:判断回文串,以及输出长度 首先是最基本的判断这个字符串是否有回文子串,以及输出最长的回文子串的长度。 模板题目,一般不直接考察 就直接 Manahce算法 就行了 例题: 最长回文 char s [ maxn ] , str [ maxn ] ; int p [ maxn ] ; int Init ( ) { int len = strlen ( s ) ; str [ 0 ] = '@' , str [ 1 ] = '#' ; int j = 2 ; for ( int i = 0 ; i < len ; ++ i ) { str [ j ++ ] = s [ i ] ; str [ j ++ ] = '#' ; } str [ j ] = 0 ; return j ; } int manacher ( ) { int mx , id ; mx = id = 0 ; int ans = - 1 ; int len = Init ( )