Given a string S, find the longest palindromic substring in S. You may assume that the maximum length of S is 1000, and there exists one unique longest palindromic substring.
//1:字符串为空串或者只有一个字符;2:O(n2)的算法, 从前到后遍历字符串,对于当前的每个字符,向两边遍历字符串,找到以当前字符为中心的对称子串的长度,并且注意对称子串是奇数或者偶数的情况
string longestPalindrome(string s)
{
if(s.size() <= 1)
return s;
int maxLength = 1;
int maxStart = 0;
for(int i = 0; s[i] != '\0'; i++)
{
int tempLength = 1;
int j = 1;
while(i-j >= 0 && s[i+j] != '\0' && s[i-j] == s[i+j])
{
j++;
tempLength += 2;
}
if(tempLength > maxLength)
{
maxLength = tempLength;
maxStart = i - j + 1;
}
tempLength = 0;
j = 0;
while(i - j >= 0 && s[i+j+1] != '\0' && s[i-j] == s[i+j+1])
{
j++;
tempLength += 2;
}
if(tempLength > maxLength)
{
maxLength = tempLength;
maxStart = i - j + 1;
}
}
return s.substr(maxStart, maxLength);
}