给定一个字符串 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; } };
这种方法是有问题的,由于若是字符过长会超时,正在看其余解法。。。
后续补齐。错误