LeetCode5 ~ 查找最长的回文子串

给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。

示例 1:

输入: "babad"
输出: "bab"
注意: "aba" 也是一个有效答案。

示例 2:

输入: "cbbd"
输出: "bb"

判断回文,要考虑是奇数还是偶数

string longestPalindrome(string s) {
    int n = s.size();
	string ret = "";
	int left = 0;
	int right = 0;
	for(int i=0; i<n; i++)//奇数情况下
	{
		left = i;
		right = i;
		while(left>0 && right<n-1 && s[left-1] == s[right+1])
		{
			left--;
			right++;
		}
		if(right-left+1 >= ret.size())
		{
			ret = s.substr(left,right-left+1);
		}
	}
	for(int i=0; i<n; i++)//偶数情况下
	{
		if(s[i] == s[i+1])
		{
			left = i;
			right = i+1;
			while(left>0 && right<n-1 && s[left-1]==s[right+1])
			{
				left--;
				right++;
			}
		}
		if(right-left+1 >= ret.size())
		{
			ret = s.substr(left,right-left+1);
		}
	}
	return ret;
    }

猜你喜欢

转载自blog.csdn.net/weixin_40822052/article/details/88608650