最长回文字符(需要补)
题目
给定一个字符串 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<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;
}
};
这种方法是有问题的,因为如果字符过长会超时,正在看其他解法。。。
后续补齐。