题目:最长回文子串
题目来源:https://leetcode.cn/leetbook/read/array-and-string/cuxq3/
题目内容:
- 给你一个字符串
s
,找到s
中最长的回文子串。 - 如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。
C++代码实现
- substr(pos,n)返回pos位置开始的n个字符,包括pos位。
- 使用动态规划。
class Solution { public: string longestPalindrome(string s) { int n = s.size(); vector<vector<bool>> dp(n, vector<bool>(n,false)); string res; for (int length = 1; length <= n; ++length) { for (int i = 0; i + length - 1 < n; ++i) { int j = i + length - 1; if (length == 1) { dp[i][i] = true; } else if (length == 2) { dp[i][j] = (s[i] == s[i+1]); } else { dp[i][j] = (s[i] == s[j] && dp[i+1][j-1]); } if (dp[i][j] && length > res.size()) { res = s.substr(i, length); } } } return res; } };