题解 | #最长回文子串#

最长回文子串

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

###中心扩展法 参考资料

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

int subpalidromelen(char *chsIn, int i);

int main(int argc, char const *argv[])
{
    char str_in[999];
    char chs[999];
    while ( scanf("%s", str_in) != EOF )
    {
        //将原有字符串间隔加入#,防止偶数字符串的回文数不好计算。奇数+偶数=奇数
        memset(chs, 0X00, sizeof(chs));
        for (int i = 0; i < strlen(str_in); i++)
        {
            strcat(chs, "#");
            sprintf(chs+strlen(chs), "%c", str_in[i]);
        }
        
        strcat(chs, "#");

        int maxHWlen = 0;
        for (int i = 0; i < strlen(chs); i++)
        {
            //中心扩展函数
            if (subpalidromelen(chs, i) > maxHWlen)
            {
                maxHWlen = subpalidromelen(chs, i);
            }
            
        }
        printf("%d\n", maxHWlen);
    }
    
    return 0;
}

int subpalidromelen(char *chsIn, int i)
{
    int len = 0;

    for (int k = 0; k <=i ; k++)
    {
        if (chsIn[i - k] == chsIn[i + k])
        {
            len++;
        }
        else
        {
            break;
        }       
    }
    return len - 1;
}

全部评论

相关推荐

牛客刘北:如果暑期实习是27届的话,你要晚一年才会毕业,企业为什么会等你呢?要搞清时间逻辑呀!27届现在实习只能是在暑假实习,这是日常实习,不是暑期实习。所以多去投日常实习吧,暑期实习肯定不会要你的
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
3
收藏
分享

创作者周榜

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