美文网首页
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. 最长回文子串

    1143. 最长公共子序列 相关标签: DP 5. 最长回文子串 相关标签 :DP

  • 字符串的几个问题

    1.最长公共子序列2.最长公共子串3.最长回文串4.最长回文序列5.最长递增序列6.最长先增后减序列7.(最短)编...

  • 字符串算法

    最长公共前缀 最长回文串 最长回文子序列 最长公共子串 反转单词顺序列 反转字符串 字符串转数字 IP-int互转

  • 子串 子序列 总结

    最长公共子串 子串的要求比子序列严格,所以可以讨论子串的终点 最长公共子序列 DP解 递归+memo 最长公共回文...

  • 最长公共子串 子序列 最长回文子串 子序列

    最长公共子串 子序列 最长回文子串 子序列 简单易懂的python代码 子串容易输出,子序列比较难(输出str而...

  • 最长公共子序列和最长公共子串

    最长公共子序列和最长公共子串区别 最长公共子串(Longest CommonSubstring)和最长公共子序列(...

  • leetcode 动态规划

    70. 爬楼梯 5. 最长回文子串 300. 最长上升子序列

  • LCS问题

    LCS问题包括最长公共子序列和最长公共子串,其中,最长公共子串要求必须连续。 对于二者的求解方式 最长公共子序列:...

  • LeetCode-1143. 最长公共子序列

    1143. 最长公共子序列 给定两个字符串 text1 和 text2,返回这两个字符串的最长公共子序列。 一个字...

  • 算法(04)动态规划

    零钱问题 背包问题 最长公共子序列 最长公共子串 最长上升子序列 最大连续子序列和

网友评论

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

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