题解 | #最长回文子串#
最长回文子串
http://www.nowcoder.com/practice/b4525d1d84934cf280439aeecc36f4af
## 思路
1、辅助函数:计算从mid1和mid2开始往两边发散的最长的长度(为了考虑奇偶的情况,设置了两个形参)
2、计算每一个点的最长回文的长度
3、注意边界条件
## 代码
```cpp
class Solution {
public:
int helper(string A, int mid1, int mid2){
while(mid1>=0 && mid2<A.size() && A[mid1]==A[mid2]){
mid1--;
mid2++;
}
int len = mid2-mid1-1;
return len;
}
int getLongestPalindrome(string A, int n) {
// write code here
int i = 0;
int max_len = 0;
while(i<n-1){
int len1 = helper(A, i, i);
int len2 = helper(A, i, i+1);
int cur_len = max(len1, len2);
max_len = max(max_len, cur_len);
i++;
}
return max_len;
}
};
public:
int helper(string A, int mid1, int mid2){
while(mid1>=0 && mid2<A.size() && A[mid1]==A[mid2]){
mid1--;
mid2++;
}
int len = mid2-mid1-1;
return len;
}
int getLongestPalindrome(string A, int n) {
// write code here
int i = 0;
int max_len = 0;
while(i<n-1){
int len1 = helper(A, i, i);
int len2 = helper(A, i, i+1);
int cur_len = max(len1, len2);
max_len = max(max_len, cur_len);
i++;
}
return max_len;
}
};
```