您的位置:首页 > 其它

LeetCode--Longest Palindromic Substring

2014-08-01 13:34 337 查看
有一个比较容易出错的点:反转求最长公共子序列,这是错误的想法

class Solution {
public:
string longestPalindrome(string s) {
int n = s.length();
int longestS = 0;
int maxlen = 1;
bool table[1000][1000] = {false};
int i,j,len;
for(i = 0 ; i < n ; ++i)
{
table[i][i] = true;
}

for(i = 0 ; i < n-1; ++i)
{
if(s[i] == s[i+1])
{
table[i][i+1] = true;
longestS = i;
maxlen = 2;
}
}
for(len = 3 ; len <= n ; ++len)
{
for(i = 0 ; i < n-len+1 ; ++i)
{
j = i+len-1;
if(s[i]==s[j] && table[i+1][j-1])
{
table[i][j] = true;
longestS = i;
maxlen = len;
}
}
}
return s.substr(longestS,maxlen);
}
};


可以优化的,优化为O(1)的空间。就是考虑2*n-1个位置为中间点,然后开始求。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: