问题: 给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 示例 1: 输入: “babad”
输出: “bab”
注意: “aba” 也是一个有效答案。
示例 2:
输入: “cbbd”
输出: “bb”
分析过程
https://www.jianshu.com/p/a7741619dd58
方法
class Solution {public:string longestPalindrome(string s) {const int n=s.size();if(n<=1){return s;}bool f[n][n];fill_n(&f[0][0],n*n,false);size_t max_len=1;size_t start=0;for(size_t i=0;i<n;i++){f[i][i]=true;for(size_t j=0;j<i;j++){f[j][i]=(s[j]==s[i]&&(i-j<2||f[j+1][i-1]));if(f[j][i]&&max_len<(i-j+1)){max_len=i-j+1;start=j;}}}return s.substr(start,max_len);}};
