最长对称子串

该代码实现了一个寻找给定字符串中最长对称子串的算法。它通过遍历字符串并检查以每个字符为中心的对称子串来找到最长的对称子串,考虑了长度为奇数和偶数的情况。示例输入为'IsPAT&TAPsymmetric?',输出为11,对应最长对称子串'sPAT&TAPs'的长度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对给定的字符串,本题要求你输出最长对称子串的长度。例如,给定Is PAT&TAP symmetric?,最长对称子串为s PAT&TAP s,于是你应该输出11。

输入格式:

输入在一行中给出长度不超过1000的非空字符串。

输出格式:

在一行中输出最长对称子串的长度。

样例:">输入样例:

Is PAT&TAP symmetric?

结尾无空行

输出样例:

11

结尾无空行

代码:

//长度最小为1,所以max初始为1

//分为两种:长度为奇数,长度为偶数

#include<stdio.h>
#include<string.h>
int main()
{
    int i,max = 1,max1,max2,q,h;
    char a[1001];
    gets(a);
    for(i = 0;i<strlen(a);i++)//奇数,从头至尾以每一位为对称轴
    {
        max1 = 1;
        q = i-1;
        h = i+1;
        while(q>=0&&h<strlen(a))
        {
            if(a[q]==a[h]) max1 = max1 +2 ;
            else break;
            q--;
            h++;
        }
        if(max1>max) max = max1;
    }
    for(i = 0;i<strlen(a);i++)
    {
        max2 = 0;
        q = i;
        h = i+1;
        while(q>=0&&h<strlen(a))
        {
            if(a[q]==a[h]) max2 = max2 +2 ;
            else break;
            q--;
            h++;
        }
        if(max2>max) max = max2;
    }
    printf("%d",max);
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乔伊. ꦿ᭄ԅ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值