5. Longest Palindromic Substring

来源:互联网 发布:为什么不能登录淘宝网 编辑:程序博客网 时间:2024/04/30 06:19
Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.Example:Input: "babad"Output: "bab"Note: "aba" is also a valid answer.Example:Input: "cbbd"Output: "bb"

今天先上一种解法,递归:

class Solution {public:    string longestPalindrome(string s) {        if(s.empty())            return 0;        int start_pos = 0, max_len = 1;  //start_pos default 0 because max_len default 1        const int len = s.length();        for(int i=0; i<len-1; ++i){            extend_palindrome(s, len, i, i, start_pos, max_len);  //assume odd length, try to extend palindrome as possible            extend_palindrome(s, len, i, i+1, start_pos, max_len);   //assume even length        }        return s.substr(start_pos, max_len);    }    void extend_palindrome(string& s, int len, int left, int right, int& start_pos, int& max_len){        while(left >= 0 && right < len && s[left] == s[right]){            --left;            ++right;        }        if(max_len < right-left-1){            start_pos = left + 1;            max_len = right - left - 1;        }    }};

为什么要有两种情况呢:比如abba和abab分别就是和偶数个最长和奇数个最长的情况。

0 0
原创粉丝点击