最長迴文字符(須要補)

題目

給定一個字符串 s,找到 s 中最長的迴文子串。你能夠假設 s 的最大長度爲 1000。code

示例 1:字符串

輸入: "babad"
輸出: "bab"
注意: "aba" 也是一個有效答案。string

示例 2:io

輸入: "cbbd"
輸出: "bb"class

來源:力扣(LeetCode)方法

解題

首先介紹一下個人錯誤。co

我開始理解這個最長迴文字符的時候,我是這樣理解的。
那麼不就是無重複字符的最長子串,加上最後一個嘛。
好比無重複字符是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<s.size();j++)
            {
                temp += s[j];
                if (temp.size()>=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;
    }
};

這種方法是有問題的,由於若是字符過長會超時,正在看其餘解法。。。
後續補齊。錯誤

相關文章
相關標籤/搜索