题解 | #最长回文子串#
最长回文子串
https://www.nowcoder.com/practice/b4525d1d84934cf280439aeecc36f4af
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param A string字符串
* @return int整型
*/
int getLongestPalindrome(string A) {
// write code here
// int n = A.size();
// if ( n == 0) {
// return 0;
// }
// int res = 0;
// vector<vector<int>> dp(n, vector<int>(n, 0));
// for (int i = n - 1; i >= 0; i--) {
// for (int j = i ; j < n; j++) {
// if (A[i] == A[j]) {
// if (j - i <= 1) {
// dp[i][j] = 1;
// } else {
// dp[i][j] = dp[i + 1][j - 1];
// }
// }
// if (dp[i][j] == 1) {
// res = max(res, j - i + 1);
// }
// }
// }
// return res;
//使用双指针求法
// string res="";
int res = 0;
for(int i = 0; i< A.size(); i++){
string str1 = expand(i,i,A);
string str2 = expand(i,i+1,A);
res = (res > str1.size()?res : str1.size()) > str2.size()?(res > str1.size()?res : str1.size()):str2.size();
}
return res;
}
string expand(int left, int right, string str){
for(;left>=0 && right < str.size() && str[left] == str[right];){
left--;
right++;
}
return string(str.begin()+left+1,str.begin()+right);
}
};
查看4道真题和解析