1 int longgestSubStr(string ss)
2 {
3 int n=(int)ss.size();
4 if(n==0)
5 return 0;
6 //申请内存
7 int **f=new int* [n];
8 for(int i=0;i<n;++i)
9 {
10 f[i]=new int[n];
11 }
12 int Max=1;
13 //初始化
14 for(int i=0;i<n;++i)
15 for(int j=0;j<n;++j)
16 f[i][j]=0;
17
18 for(int i=0;i<n;++i)
19 {
20 f[i][i]=1;
21 if(i<n-1&&ss[i]==s[i+1])
22 {
23 f[i][i+1]=2;
24 }
25 }
26 //动态规划
27 for(int len=3;len<=n;len++)
28 {
29 for(int i=0;i<=n-len;i++)
30 {
31 int j=i+len-1;
32 if(ss[i]==ss[j]&&f[i+1][j-1]>0)
33 {
34 f[i][j]=max(f[i][j],f[i+1][j-1]+2);
35 }
36 if(f[i][j]>Max)
37 Max=f[i][j];
38 }
39 }
40 return Max;
41 }