Leetcode Longest Palindromic Substring

来源:互联网 发布:淘宝返钱怎么返的 编辑:程序博客网 时间:2024/06/05 14:45

题意:求最长回文子串。

思路:记录到目前为止,以该字母结尾的所有字串的起始位置,之后的字符遍历这些长度,记录更新后的起始位置。

class Solution {public:    string longestPalindrome(string s) {        vector<vector<int> > pal;        vector<int> temp(1, 0);        pal.push_back(temp);         for(int i = 1; i < s.length(); ++ i) {            vector<int> tempv;            for(int j = 0; j < pal[i - 1].size(); ++ j) {                if(pal[i - 1][j] - 1 >=0 && s[pal[i - 1][j] - 1] == s[i]) { //cout << pal[i - 1][j] - 1 << endl;                    tempv.push_back(pal[i - 1][j] - 1);                }            }            if(s[i] == s[i - 1]) tempv.push_back(i - 1);            tempv.push_back(i);            pal.push_back(tempv);        }                string re;        int maxlen = 0;        for(int i = 0; i < pal.size(); ++ i) {            for(int j = 0; j < pal[i].size(); ++ j) {                if(maxlen < i - pal[i][j] + 1) {                    maxlen = i -pal[i][j] + 1;                    re = s.substr(pal[i][j], maxlen);                }            }        }                return re;    }};


0 0
原创粉丝点击