leetcode 最长回文子串

给你一个字符串 s,找到 s 中最长的回文子串。
示例 1:

输入:s = "babad"
输出:"bab"
解释:"aba" 同样是符合题意的答案。

示例 2:

输入:s = "cbbd"
输出:"bb"

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-palindromic-substring

思路见代码:

class Solution{
	public:
		string longestPalindrome(string s)
		{
			vector<vector<int> > dp(s.size(), vector<int>(s.size(),0));
			int maxn = -1;
			int left = 0;
			int right = 0;
			for(int i=s.size(); i>=0; i--)				//从右侧开始遍历 
			{
				for(int j=i; j<s.size(); j++)			//I的下标开始 
				{
					if(s[i] == s[j])					//如果两个值相等 
					{
						if(j-i <= 1)					//如果两者之间距离为0或1,比如同是a或aa 
						{
							dp[i][j] = true;
						}else if(dp[i+1][j-1] == true)	//两者之间的差距大于1,看中间的值是不是一样,比如aba 
						{
							dp[i][j] = true;
						}
					}
					if(dp[i][j] == true && j-i+1 > maxn)//如果确定是回文 ,选取两个点之间的最大距离 
					{
						maxn = j-i+1;
						left = i;
						right = j;
					}
				}
			}
			return s.substr(left, right-left+1); 		//返回最大的距离值 
		}
};```

上一篇:Leetcode 56-合并区间


下一篇:LeetCode系列之 (JavaScript) => 26. 删除有序数组中的重复项