题解 | #最长回文子串#

最长回文子串

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

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

int main(){

    char arr[1000];
    fgets(arr, sizeof(arr), stdin);
    arr[strlen(arr) - 1] = '\0';
    int len = strlen(arr);
    int ans = 1;

    for(int i = 0; i < len; i++){
        int l = i - 1, r = i + 1;
        while(l >= 0 && r < len && arr[l] == arr[r]){
            r++;
            l--;
        }
        int len1 = r - l - 1;
        ans = ans > len1 ? ans : len1;

        l = i;
        r = i + 1;
        while(l >= 0 && r < len && arr[l] == arr[r]){
            l--;
            r++;
        } 
        int len2 = r - l - 1;
        ans = ans > len2 ? ans : len2;
    }

    printf("%d", ans);

    return 0;
}

全部评论
定一个中心点,向中心点两边扩散,记得考虑子串是奇数和偶两种情况。
点赞 回复 分享
发布于 2023-02-28 16:51 陕西

相关推荐

像好涩一样好学:这公司我也拿过 基本明确周六加班 工资还凑活 另外下次镜头往上点儿
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务