Longest Palindromic Substring

来源:互联网 发布:unity3d圣典app 编辑:程序博客网 时间:2024/05/21 22:55

一、问题描述

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

二、思路

本文思路是单独设置一个函数,计算出以当前位置的回文串长度,这样在主函数中只需要考虑两种回文串的长度即可:一是aba奇数形式,二是abba偶数形式。

最后返回最长的回文串即可。


三、代码

class Solution {public:    string palindrome(string t, int left,int right){        int n = t.length();        while(left >= 0 && right <= n -1 && t[left] == t[right]){            --left;            ++right;        }        return t.substr(left + 1, right - left - 1);    }        string longestPalindrome(string s) {        int n = s.length();        if(n == 0)            return "";        string longestSubstr = s.substr(0,1);        for(int i = 0; i < n - 1; ++i){            string str1 = palindrome(s, i , i);            if(str1.length() > longestSubstr.length()){                longestSubstr = str1;            }            string str2 = palindrome(s, i , i + 1);            if(str2.length() > longestSubstr.length()){                longestSubstr = str2;            }        }        return longestSubstr;    }};


0 0
原创粉丝点击