题解 | #密码截取#

密码截取

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

#include <stdlib.h>
#include <string.h> 
int main(void)
{
    char str[4096];
    scanf("%s", str);
    int len = strlen(str);
    char dp[len][len];
    int maxlen = 1;
    for(int i=0; i<len; i++){
        for(int j=0; j<=i; j++){
            if(i == j)//同一个数置1
                dp[j][i] = 1;
            else if(i-j == 1) //两元素相邻,判断是否是回文子串
                dp[j][i] = (str[i] == str[j]);
            else
                dp[j][i] = (str[i] == str[j] && dp[j + 1][i - 1]);//两元素相同不相邻,判断中间的子串是否是回文子串
            if(dp[j][i] && i - j + 1 > maxlen) //是回文子串,判断取最大
                    maxlen = i - j + 1;
        }    
    }
    printf("%d",maxlen);
    return 0;
}
全部评论

相关推荐

点赞 评论 收藏
分享
05-26 10:24
门头沟学院 Java
qq乃乃好喝到咩噗茶:其实是对的,线上面试容易被人当野怪刷了
点赞 评论 收藏
分享
评论
点赞
2
分享

创作者周榜

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