5. 最长回文子串 class Solution { public: string longestPalindrome(string s) { int length_s = s.size(); if (length_s == 0){ return s; } int dp[length_s][length_s], maxlength = 1, begin = 0; for (int i = 0; i < length_s; i++){ for (int j = 0; j < length_s; j++){ if (i == j){ dp[i][j] = 1; } else{ dp[i][j] = 0; } } } for (int j = 0; j < length_s; j++){ for (int i = 0; i < j; i++){ if (s[i] == s[j] && (i + 1 == j || dp[i+1][j-1])){ dp[i][j] = 1; } if (dp[i][j] && j - i + 1 > maxlength){ maxlength = j - i + 1; begin=i; } } } return s.substr(begin, maxlength); } };