思路:
中心扩展法
以每个下标做为中心, 向两遍扩散
需要注意的是, 分为奇偶两种情况
奇数时, 当前元素为中心
偶数时,当前元素和下一个元素为中心
最后保存最长长度和起始坐标即可, 注意空字符串的情况
我曾经犯的错误对substr用法不对, 第一个参数是起始位置, 第二个参数是长度, 而不是终点位置
string longestPalindrome(string s) {
int maxleng = 0;
int maxleft = 0;
string temp = "";
string longeststr = "";
for (int i = 0; i < s.size(); i++)
{
string ji = wangliangbianzhao(i, i, s);
string ou = wangliangbianzhao(i, i+1, s);
if (ou.size() > ji.size())
{
temp = ou;
}
else
{
temp = ji;
}
if (maxleng < temp.size())
{
longeststr = temp;
maxleng = temp.size();
}
}
return longeststr;
}
string wangliangbianzhao(int left, int righ, string s)
{
if (s == "")
{
return 0;
}
int L = left;
int R = righ;
int lenth = 0;
while (L >=0 && R < s.size())
{
if (s[L] == s[R])
{
L--;
R++;
}
else
{
break;
}
}
string res = s.substr(L+1,R-L-1);
return res;
}