问题:
给定一个字符串s,找到s中最长的回文子字符串。
所谓回文字符串,指的是无论从左往右读还是从右往左读,结果都是一样的,也叫做对称字符串。
比如 “google” 的最长回文子串为 “goog”。
问题分析
求解回文串的一般方法是首尾比较,以中点为界限,如果一直到中点首尾对应的字符都相等,则该字符串为回文串
例:设str="abccba",从i=0开始,str[0]==str[5],str[1]==str[4],str[2]==strs[3],i=2时到达中点,此前,首尾对应的字符都相等,所以该字符串为回文串。
要想求一个字符串的最长回文字串,则需依次判断该字符串的所有字串,这样的算法时间复杂度为O(n^3),显然这样的算法并不好,本文介绍的算法可以将时间复杂度降为O(n),这大大降低了时间复杂度。算法的性能大大提升。
算法分析
这里用一个例子来说明算法的过程。如 cabadabae,我已经知道了第三位为中心的aba和第5位为中心的abadaba是回文,
那么由回文的特性&#