题解 | #密码截取#

密码截取

http://www.nowcoder.com/practice/3cd4621963e8454594f00199f4536bb1

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

int odd(char *ptr, int len)
{
    int count = 1;
    char *pl = ptr-1;
    char *pr = ptr+1;
    for(int i = 0; i < len; i++)
    {
        if(*pl != *pr)
            break;
        count += 2;
        pl -= 1;
        pr += 1;
    }
    return count;
}

int even(char *pl, char *pr, len)
{
    int count = 2;
    for(int i = 0; i < len; i++)
    {
        if(*pl != *pr)
            break;
        count += 2;
        pl -= 1;
        pr += 1;
    }
    return count;
}

int secrect(char *ptr, int left, int right)
{
    int len = left > right ? right: left;
    if(len == 0)
        return 1;
    if(*ptr != *(ptr+1))
        return odd(ptr, len);
    int a = odd(ptr, len);
    int b = even(ptr-1, ptr+2, len);
    return a > b ? a : b;
}

int maxlen(int a, b)
{
    return a > b ? a : b;
}

int main(void)
{
    char str[2501];
    while(gets(str))
    {
        int max = 1;
        int len = strlen(str);
        for(int i = 0;i < len; i++)
        {
            max = maxlen(max, secrect(str+i, i, len - i));
        }
        printf("%d\n", max);
    }
    return 0;
}
全部评论

相关推荐

10-14 21:00
门头沟学院 Java
吃花椒的狸猫:这个人说的倒是实话,特别是小公司,一个实习生哪里来的那么多要求
点赞 评论 收藏
分享
09-01 21:40
已编辑
同济大学 Java
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

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