C : different results in run and submission on longest palindromic substring

image


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

bool dp[1001][1001];
bool saved[1001][1001];

bool isPalindrome(char *s, int i, int  j){
    if(j<=i) return true;
    if(saved[i][j]) return dp[i][j];
    dp[i][j] = (s[i] == s[j]) && isPalindrome(s, i+1, j-1);
    saved[i][j] = true;
    return dp[i][j];
}

char * longestPalindrome(char * s) {
    
    int ans=0;
    int begin=0;
    int end=0;
    int n = strlen(s);
    for(int i=0; i<n; i++){
        for(int j=i; j<n; j++) {
            if(isPalindrome(s, i, j)) {
                if(j-i+1 > ans) {
                    ans = j-i+1;
                    begin = i;
                    end=j+1;
                }
            }
        }
    }
    char *a;
    a = malloc(end-begin+1);
    int j=0;
    for(int i=begin; i<end; i++) 
    a[j++] = s[i];
    a[j]='\0';

    return a;
}
Comments (1)