题解 | #最长回文子串#

最长回文子串

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;
    }
};
```
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务