题解 | #最长回文子串#
最长回文子串
http://www.nowcoder.com/practice/b4525d1d84934cf280439aeecc36f4af
回文子串分两种情况:
- 字串的长度是奇数
- 字串的长度是偶数
分两种情况,分别以当前的坐标为起点,向两边延申搜索即可,当奇数的时候,两边的起点都是当前坐标,当是偶数的时候,左边的起点是当前的点,右边的起点则是当前点的下一个坐标
class Solution {
public:
int res = 0;
void search(string& A, int i, int j, int n){
while(i>=0 && j<n && A[i] == A[j]){
res = max(res, j-i+1);
j++;
i--;
}
}
int getLongestPalindrome(string A) {
int n = A.size();
for(int i = 0; i<n; i++){
// 奇数情况
search(A, i, i, n);
// 偶数情况
search(A, i, i+1, n);
}
return res;
}
};