题解 | 最长回文子串

最长回文子串

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

#include <stdio.h>
#include <string.h>
#define max(a,b)(a>b?a:b)
int main() {
    char s[800]={0};
    char c;
    int i=0;
    //加入不存在的字符来统一奇偶个数的回文字串
    while ((c=getchar())!='\n') {
        s[2*i]='0';
        s[2*i+1]=c;
        i++;
    }
    s[2*i]='0';//前后都加入不存在的字符以便完整边界
    int count=0;
    for(int j=0;j<=strlen(s);j++){
        for (int k=1;(j-k)>=0&&(j+k)<=strlen(s); k++) {
            if (s[j-k]==s[j+k]) {
                count=max(count,k);//判断极限 偶:0X0X0 奇: 0x0x0x0 相较中心都为k半径
            }
            else break;
        }
    }
    printf("%d",count);
    return 0;
}

全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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