在网上找了很多相关算法,一直想证明自己的思路有没有问题,但是leetcode提交时没找到错误,细节上有问题,
思路:有疑问 回头再来想一下!!!1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
既然是最大连续的回文字符串,那么我可以这样构成dp的状态方程,以string[i]为结尾的最长连续会问字符串dp[i],当然会有这么一个
maxlen=max{maxlen,dp[i]} 或者说
if(naxlen<dp[i]) maxlen=dp[i]; t=i; 那么就可以写出状态方程了 if(string[i-dp[i-1])==string[i]) dp[i]=dp[i-1]+2;
例如:
class Solution { public:string longestPalindrome(string s) { int len=s.length(); int t=0; vector<int>sum(len,0); if(len==0) return 0; if(len==1) sum=1; int maxlen=0; for(int i=1;i<len;i++) { if(s[i-sum[i-1]]==s[i]&&i-sum[i-1]>0) sum[i]=sum[i-1]+2; if(s[i]==s[i-1]) sum[i]=2; else sum[i]==1; if(sum[i]>maxlen) { maxlen=sum[i]; t=i; } |