本质上字符串这种题都可以暴力穷举 但是还是要用更好的算法试试
我开始没有想到这是一道可以用动态规划解决的问题
1 class Solution { 2 public: 3 string longestPalindrome(string s) { 4 int n = s.size(); 5 vector<vector<int>> dp(n, vector<int>(n)); 6 string ans; 7 for (int len = 0; len < n; ++len) { 8 for (int i = 0; i + len < n; ++i) { 9 int j = i + len; 10 if (len == 0) { 11 dp[i][j] = 1; 12 } else if (len == 1) { 13 dp[i][j] = (s[i] == s[j]); 14 } else { 15 dp[i][j] = (s[i] == s[j] && dp[i + 1][j - 1]); 16 } 17 if (dp[i][j] && len + 1 > ans.size()) { 18 ans = s.substr(i, len + 1); 19 } 20 } 21 } 22 return ans; 23 } 24 };