版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
主要运用动态规划的算法
class Solution {
public:
string longestPalindrome(string s) {
int len = s.length(); //获取s的长度
bool dp[1001][1001] = {}; //判断是不是回文
int max = 1,index = 0; //记录起点和长度
for(int i=0; i<len; i++)
dp[i][i] = 1; //初始话数组
for(int i=0; i<len; i++)
{
for(int j=0; j<i; j++)
{
if(i-j < 2) dp[j][i] = (s[i] == s[j]);
else if(s[i] == s[j] && dp[j+1][i-1] == 1) dp[j][i] = 1;
if(dp[j][i] == 1)
{
int k = i-j+1;
if(max < k)
{
max = k;
index = j;
}
}
}
}
return s.substr(index,max);
}
};