suibenzhi
4/15/2018 - 6:18 AM

最长回文子串.cpp

给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 长度最长为1000。
示例:
输入: "babad"
输出: "bab"
注意: "aba"也是有效答案

示例:
输入: "cbbd"
输出: "bb"


bool CheckPalindrome(string s, int low, int high) {
		while (low <= high) {
			if (s[low] == s[high]) {
				low++; high--;
			} else {
				return false;
			}
		}
		return true;
}

string longestPalindrome(string s)
{
	int iLenOfS = s.size();
	if(iLenOfS == 1)
	{
		return s;
	}
	int span = 0;
	int i;
	for(int span = iLenOfS-1; span>0; span--)
	{
		for(int i = 0; i < iLenOfS-span; i++)
		{
			if(s[i] == s[i+span])
			{
				if(CheckPalindrome(s,i,i+span))
				{
					return s.substr(i,span+1);
				}
			}
		}
	}
	return s.substr(0,1);

}