#最长回文子串

最长回文子串

https://www.nowcoder.com/practice/12e081cd10ee4794a2bd70c7d68f5507?tpId=37&&tqId=21308

#include <stdio.h>
int func (const char *a)
{
    int cnt = 0, des = 0;
    int len = 0;
    char *p = a + 1;

    while (*p != '\0') {//*(p+1)!='\0'
        if (*p == *(p+1)) { //even
            cnt = 0;
            des = p - a;
            for (int i = 0; i < des +1; i++) {
                if (*(p+1+i) != *(a+des-i)) {
                    break;
                }
                cnt += 2;
            }
            len = len > cnt ? len : cnt;
        }
        if (*(p-1) == *(p+1)) { //odd
            cnt = 1;
            des = p - a;
            for (int i = 0; i < des + 1; i++) {
                if (*(p+1+i) != *(a+des-1-i)) {
                    break;
                }
                cnt += 2;
            }
            len = len > cnt ? len : cnt;
        }
        p++;
    }
    return len;
}
int main()
{
    char arr[1024] = {0};

    while (EOF != scanf("%s", arr)) {
        printf("%d\n", func(arr));
    }

    return 0;
}
全部评论

相关推荐

评论
点赞
收藏
分享
牛客网
牛客企业服务