您的位置:首页 > 职场人生

【面试题之算法部分】最长回文子串

2015-08-20 23:26 585 查看
暴力法:枚举中心位置

int LongestPalindrome(const char *s, int n)
{
if(s == NULL || n < 1) return -1;
int i, j, k, max = 0;
for(int i = 0; i < n; i++)
{
//回文子串为奇数的情况
for(int j = 0; (i - j >= 0) && (i + j < n); j++)
if(s[i-j] != s[i+j]) break;
j--;
if(j * 2 + 1 > max) max = j * 2 + 1;
//回文子串为偶数的情况
for(int k = 0; (i - k >= 0) && (i + k + 1 < n); k++)
if(s[i-k] != s[i+k+1]) break;
k--;
if(k * 2 + 2 > max) max = k * 2 + 2;
}
return max;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: