题解 | #最长回文子串#

最长回文子串

https://www.nowcoder.com/practice/12e081cd10ee4794a2bd70c7d68f5507

#include <stdio.h>
#include <string.h>

#define MAX(a,b) (a>b)?a:b

static int Manacher(char *str)
{
    if(!str)
    {
        return -1;
    }
    int max = 0;
    int len = strlen(str);
    for(int i = 0; i < len; i++)
    {
        if(str[i] == str[i+1])    //abba
        {
            int count_abba = 0;
            for(int j = 0; j < len; j++)
            {
                if(str[i-j]==str[i+1+j] && i-j>=0 && i+j+1<len)
                {
                    count_abba += 2;
                }
                else
                {
                    break;
                }
            }
            max = MAX(max, count_abba);
        }
        else if(str[i-1] == str[i+1])    //aba
        {
            int count_aba = 1;
            for(int j = 0; j < len; j++)
            {
                if(str[i-1-j]==str[i+1+j] && i-1-j>=0 && i+j+1<len)
                {
                    count_aba += 2;
                }
                else
                {
                    break;
                }
            }
            max = MAX(max, count_aba);
        }
    }
    return max;
}
int main()
{
    char str[350] = {0};
    gets(str);
    int ret = Manacher(str);
    if(ret >= 0)
    {
        printf("%d\n", ret);
    }
    return 0;
}
全部评论

相关推荐

找个工作&nbsp;学历是要卡的&nbsp;要求是高的&nbsp;技能不足是真的&nbsp;实习经验是0的&nbsp;简历无处可写是事实的&nbsp;钱不好赚是真的&nbsp;想躺平又不敢躺&nbsp;也不甘心躺&nbsp;怕自己的灵感和才华被掩埋甚至从未被自己发现&nbsp;又质疑自己是否真正有才华
码农索隆:你现在啊,你心里都明白咋回事,但是你没办法改变现状,一想到未来,你又没有信心狠下心来在当下努力。 得走出这种状态,不能一直困在那里面,哪不行就去提升哪,你一动不动那指定改变不了未来,动起来,积少成多才能越来越好
点赞 评论 收藏
分享
06-20 17:42
东华大学 Java
凉风落木楚山秋:要是在2015,你这简历还可以月入十万,可惜现在是2025,已经跟不上版本了
我的简历长这样
点赞 评论 收藏
分享
评论
点赞
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务