最长回文字符(需要补)

题目

给定一个字符串 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;
	}
};

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

posted @ 2020-02-15 21:09  敖毛毛  阅读(222)  评论(0编辑  收藏  举报