1. 问题描述
回文串(palindromic string)是指这个字符串无论从左读还是从右读,所读的顺序是一样的;简而言之,回文串是左右对称的。所谓最长回文子串问题,是指对于一个给定的母串
abcdedcb
从所有的为回文串的子串a, ded, cdedc, bcdecdb中;找出最长的那一个bcdecdb。但是该如何判断子串是否回文然后找出最长者呢?正好Leetcode也有一个5. longest-palindromic-substring问题,可以用来做代码测试。
2. 求解
2016.12.28更新
将原来的C代码替换为Go 1.7,修复了评论中所指出的动态规划bug。
穷举法
最容易想到的是穷举法,穷举所有子串,找出是回文串的子串,统计出最长的那一个。
// check whether a string is palindromic
func isPalindromic(s string) bool {
本文介绍了如何求解最长回文子串问题,包括穷举法、动态规划和分治法三种策略。动态规划是优化过的解决方案,时间复杂度为(O(n^2)),而分治法以每个字符为中心轴寻找回文串,总复杂度为(O(n^2))。文章提供了相关参考资料供进一步学习。
订阅专栏 解锁全文
1059

被折叠的 条评论
为什么被折叠?



