給定一個字符串 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; } };
這種方法是有問題的,由於若是字符過長會超時,正在看其餘解法。。。
後續補齊。錯誤