美文网首页
1143. 最长公共子序列/5. 最长回文子串

1143. 最长公共子序列/5. 最长回文子串

作者: Kevifunau | 来源:发表于2020-03-20 18:08 被阅读0次

    1143. 最长公共子序列

    • 相关标签: DP
    
    #define BUFLEN 1001
    #define MAX(x,y) (x > y ? x : y)
    int longestCommonSubsequence(char * text1, char * text2){
    
        int dp[BUFLEN][BUFLEN] = {0};
        int res = 0;
        for (int i = 0; i < strlen(text1); i++) {
            for (int j = 0; j < strlen(text2);j++) {
    
                dp[i + 1][j + 1] = (text1[i] == text2[j]) ? dp[i][j] + 1 : MAX(dp[i][j + 1], dp[i + 1][j]);
    
            }
        }
    
        return dp[strlen(text1)][strlen(text2)];
    
    }
    

    5. 最长回文子串

    • 相关标签 :DP
    
    
    /*
    1. N * ( 双指针两边拓展)
    
    2. 正 , 反  -》 最长公共子串  -》 DP
    
    dp[i][j] = dp[i-1][j-1] + 1
    
    不对 回文 不一样。。 
    
    dp[i][j] 表示 i..j 是不是 回文 -- 》dp[i+1][j-1] 是不是回文
    
    
    */
    
    
    
    // #define R(idx, len) (len - 1 - idx)  // reverse
    #define BUFLEN 1001
    char * longestPalindrome(char * s){
    
    
        if (strlen(s) == 0 || strlen(s) == 1) {
            return s;
        }
    
        int dp[BUFLEN][BUFLEN] = {0};
        int maxi = 0;
        int max = 0;
    
        for (int j = 0; j < strlen(s); j++) {
            for (int i = 0; i <= j ; i++) {
                dp[i + 1][j +1] = (s[i] == s[j]) && (  j - i <= 2|| dp[i+2][j]);
                if (dp[i + 1][j +1] && j - i >= max) {
                    max = j - i + 1;
                    maxi = i;
                }
                
            }
        }
    
            // for (int i = 0; i <= strlen(s); i++) {
            // for (int j = 0; j <= strlen(s); j++) {
            //     printf("%d ", dp[i][j]);
            // }
            // printf("\n");
            // }
    
        printf("%d %d\n", maxi, max);
        char *res = (char *)malloc(max + 1); // “\0” max + 1
        memset(res, 0, max + 1);
    
        memcpy(res, &s[maxi], max);
    
        return res;
    
    }
    
    
    
    

    相关文章

      网友评论

          本文标题:1143. 最长公共子序列/5. 最长回文子串

          本文链接:https://www.haomeiwen.com/subject/mtcsyhtx.html