最长回文子串
解题思路:
中心扩展法。for循环遍历,每次以mid=i/2.0为中心,用双指针往两边比较,直到不相等。
代码:
public string LongestPalindrome(string s)
{
string result=string.Empty;
int max=0;
for(int i=0;i<2*s.Length-1;i++)//为什么是到2*s.Length-1,因为我们最终要mid到s.Length-0.5。
{
double mid=i/2.0;
int p=(int)Math.Floor(mid);
int q=(int)Math.Ceiling(mid);
while(p>=0&&q<s.Length)
{
if(s[p]!=s[q])
break;
else
{
q++;
p--;
}
}
if(q-p-1>max)//若大于之前最长的才记录下来。
{
result=s.Substring(p+1,q-p-1);
max=q-p-1;
}
}
return result;
}