问题描述:
求一个字符串的最长回文子串,返回这个子串。
这个题目适合用动态规划的方式求解:
代码实现:
string longestPalindrome(string s) { int size = s.size(); int dp[1000][1000] = {0}; int left = 0; int right = 0; int len = 0; for(int j = 0; j < size; ++j) { for(int i = 0; i < j; ++i) { if(j - i < 2) { dp[i][j] = (s[i] == s[j]); } else { dp[i][j] = (s[i] == s[j]) && dp[i + 1][j - 1]; } if(dp[i][j] && len < j - i + 1) { len = j - i + 1; left = i; right = j; } }//for dp[j][j] = 1; }//for return s.substr(left, right - left + 1); }
时间: 2024-09-29 22:49:31