题解 | #最长回文串#
最长回文子串
http://www.nowcoder.com/practice/b4525d1d84934cf280439aeecc36f4af
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param A string字符串
* @return int整型
*/
#中心扩散法,分为偶数和奇数之分:
#1.以i,i+1开始往两边扩散
#2.以i-1,i+1开始往两边扩散
int getLongestPalindrome(string A) {
// write code here
int lens=A.size();
if(lens==0||lens==1)
return lens;
int max_lens=1;
for(int i=0;i<lens;i++)
{
int j=i,k=i+1;
while(j>=0&&k<lens&&A[j]==A[k])
{
if(k-j+1>max_lens)
{
max_lens=k-j+1;
}
j--;
k++;
}
}
for(int i=0;i<lens;i++)
{
int j=i-1,k=i+1;
while(j>=0&&k<lens&&A[j]==A[k])
{
if(k-j+1>max_lens)
{
max_lens=k-j+1;
}
j--;
k++;
}
}
return max_lens;
}
};