题目:
给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。
思路:
求最值,想到使用动态规划。但此题的递推式比较难想到。我们设P(i,j)=true表示子串si到sj的子串为回文,为false则不为回文,
则p(i,j)=(p(i+1,j-1)and si==sj),这便是递归式。同时需注意,回文分为奇数回文(aba)和偶数回文(baab),需要分别求出。
代码:
1 | // DP |
复杂度分析:
动态规划:
时间复杂度:
O(n2)。
空间复杂度:
O(n2)。