Longest Palindromic Substring
题意
求最长回文子串
解法
求最长回文子串是很经典的问题啊,有很多种解法,最基本的就是用暴力,时间复杂度是log(n^3),再者就是用经典的dp解法,时间复杂度为log(n^2),更进阶的使用manacher算法,时间复杂度为log(n),就这道题目来说,最长的串为1000,那么用n^2的复杂度就可以。
我们用table[i][j]来记录字符串从i到j是否为回文串,很显然,table[i][i]=1,然后同时我们也可以初始化table[i][i+1],只要比较s[i]和s[i+1]是否相等即可。
最关键的状态转移方程就是如果s[i]==s[j]并且table[i+1][j-1],则table[i][j]=table[i+1][j-1],这是很显然的。
我刚开始用python时老是超时,后来换用C++可以过。
代码
|
|