Longest Palindromic Substring

来源:互联网 发布:360急速浏览器 优化版 编辑:程序博客网 时间:2024/06/15 19:58

Given a string S, find the longest palindromic substring in S. You may assume that the maximum length ofS is 1000, and there exists one unique longest palindromic substring.


Solution:

class Solution {public:    string longestPalindrome(string s) {        string res;        int len = s.length();        if(len == 0) return res;        int maxO = 0, indexO = 0;        int maxE = -1, indexE = 0;        for(int i = 0; i < len - 1; ++i)        {            int j = 1;            for(; j <= (len+1)/2; ++j)            {                if(i-j >= 0 && i+j <= len-1 && s[i-j] == s[i+j]) continue;                else break;            }            if(j - 1 > maxO)            {                maxO = j - 1;                indexO = i;            }            if(s[i] == s[i+1])            {                int j = 1;                for(; j <= (len+1)/2; ++j)                {                    if(i-j >= 0 && i+j+1 <= len-1 && s[i-j] == s[i+j+1]) continue;                    else break;                }                if(j - 1 > maxE)                {                    maxE = j - 1;                    indexE = i;                }            }        }        if(maxO > maxE) res = s.substr(indexO-maxO, 2*maxO+1);        else res = s.substr(indexE-maxE, 2*maxE+2);        return res;    }};


0 0