求一字符串中最大回文串的长度

比如:
[list]
[*]"AABB" 回文长度为: 4 回文子串为: "AABB"
[*]"12abcba22" 回文长度为: 7 回文子串为: "2abcba2"
[/list]


#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main(int argc, char **argv)
{
if (argc != 2) {
printf("usage: ./a.out <string>\n");
exit(EXIT_FAILURE);
}

char *s = argv[1];
char *p;
int max = 1;
int i;

for (p = s; *p != '\0'; p++) {
for (i = 1; (p - i) >= s && *(p + i) != '\0'; i++) {
if (*(p - i) != *(p + i))
break;
}

if (max < (i * 2 - 1))
max = (i * 2 - 1);

for (i = 0; (p - i) >= s && *(p + i + 1) != '\0'; i++) {
if (*(p - i) != *(p + i + 1))
break;
}

if (max < (i * 2))
max = (i * 2);
}

printf("max = %d\n", max);
exit(EXIT_SUCCESS);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值