最长回文字符(需要补)

题目

给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。

示例 1:

输入: "babad"
输出: "bab"
注意: "aba" 也是一个有效答案。

示例 2:

输入: "cbbd"
输出: "bb"

来源:力扣(LeetCode)

解题

首先介绍一下我的错误。

我开始理解这个最长回文字符的时候,我是这样理解的。
那么不就是无重复字符的最长子串,加上最后一个嘛。
比如无重复字符是abc,那么不就是cabc吗?
在这里我有两个错误,第一个错误就是无重复字符abc,回文不是cabc,因为如果字符就是abc的话就不符合。
第二我理解错了,回文的意思,回文是acca,这才是回文,就是从左到右,还是从右到左都一样。
最后我用最长公共子系列,去解决;

class Solution {
public:
    string longestPalindrome(string s) {
        if (s.size() == 1||s.size()==0)
        {
            return s;
        };
        string res = s;
        reverse(res.begin(),res.end());
        int len = 0;
        string result = "";
        for (int i = 0; i < s.size(); i++)
        {
            string temp = "";
            for (int j=i;j=len)
                {
                    if (res.find(temp)!=-1)
                    {
                        string temp2 = temp;
                        reverse(temp2.begin(), temp2.end());
                        if (temp2==temp)
                        {
                            result = temp;
                            len = temp.size();
                        }
                    }
                }
                else
                {

                    continue;
                }
            }
            temp = "";
        }
        return result;
    }
};

这种方法是有问题的,因为如果字符过长会超时,正在看其他解法。。。
后续补齐。

你可能感兴趣的:(最长回文字符(需要补))