leetcode: Longest Palindromic Substring

来源:互联网 发布:淘宝客服处理售后软件 编辑:程序博客网 时间:2024/06/03 07:30

最开始采用的是动态规划的方法,但是超时。后来上网查了下,找到了以下这种方法。分为aa和aba两种情况考虑,以每一个字符为中心判断其为中心的时候得到的最长回文串。同动态规划相比,这种方法在发现不是回文的时候就会返回,而不像动态规划严格执行n*n.的时间,会快很多。

代码的思路很简单,实现起来也不难,就

lass Solution {public:    string findPal(string &s, int left, int right)    {        if (left < 0)            return s.substr(left+1, 1);                    if (right >= s.size())            return s.substr(right-1, 1);                    while(0 <= left && right < s.size())        {            if (s[left] != s[right])                break;            left--;            right++;        }                left++;        right--;                return s.substr(left, right - left + 1);            }        string longestPalindrome(string s) {        // Start typing your C/C++ solution below        // DO NOT write int main() function        if (s.size() == 0)            return "";                    string ret;                for(int i = 0; i < s.size(); i++)        {            string str = findPal(s, i - 1, i + 1);            if (str.size() > ret.size())                ret = str;                            str = findPal(s, i, i + 1);            if (str.size() > ret.size())                ret = str;        }                return ret;    }};

直接把对方的代码搬上来了,多多学习,多多参考。

0 0
原创粉丝点击