您的位置:首页 > 其它

LeetCode之Longest Palindromic Substring

2015-09-03 19:17 387 查看
/*用dp[i][j]表示子串s[i...j]是否为回文,则有
dp[i][j] = d[i+1][j-1] && s[i] == s[j](i+1 < j);
dp[i][j] = (s[i] == s[j])(i+1 == j)并且,dp[i][i] = true;。*/
class Solution {
public:
string longestPalindrome(string s) {
if(s.size() <= 1) return s;
int len = 1, start = 0;
const int size = s.size();
bool dp[size][size];
memset(dp, 0, sizeof(dp));
for(int i = 0; i < s.size(); ++i) dp[i][i] = true;
for(int j = 1; j < s.size(); ++j){
for(int i = 0; i + j < s.size(); ++i){
if(j == 1) dp[i][i+j] = (s[i] == s[i+j]);
else dp[i][i+j] = (dp[i+1][i+j-1] && (s[i] == s[i+j]));
if(dp[i][i+j] && len < j+1){
len = j+1;
start = i;
}
}
}
return s.substr(start, len);
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: