最长回文子串

来源:互联网 发布:佳为软件称软件 编辑:程序博客网 时间:2024/06/05 10:13
#include<stdio.h>

int getsize(char *s)
{
int num = 0;
while (*s++!='\0')
{
num++;
}
return num;
}
int palindrome(const char *s, int n)
{
int i, j, max, c;
max = 0;
if (s == 0 || n < 1)
{
return 0;
}
for (i = 0; i < n; i++)
{
//回文长度为奇数:
for (j = 0; (i - j >= 0) && (i + j <= n); ++j)
{
if (s[i - j] != s[i + j])
{
break;
}
c = 2 * j + 1;
}
if (c > max)
{
max = c;
}
for (j = 0; (i - j >= 0) && (i + j + 1 < n); ++j)
{
if (s[i - j] != s[i + j + 1])
{
break;
}
c = 2 * j + 2;
}
if (c > max)
{
max = c;
}
}
return max;
}
//测试函数:
int main()
{
char s[] = "asfsa";
int num = getsize(s);
int num1;
num1=palindrome(s, num);
printf("%d", num1);


return 0;
}
0 0
原创粉丝点击