美文网首页
c语言求最长公共子串长度

c语言求最长公共子串长度

作者: 一路向后 | 来源:发表于2021-04-04 22:00 被阅读0次

1.解题思路

   将两个字符串组成二维数组,相同的值为1,不同的值为0,同时在对角线上叠加,矩阵中的最大值则为最长公共子串长度.

2.源码实现

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

int func(char *a, int n, char *b, int m)
{
    int **c = (int **)malloc(n*sizeof(int *));
    int s = 0;
    int t = -1;
    int i, j;

    for(i=0; i<n; i++)
    {
        c[i] = (int *)malloc(m*sizeof(int));
    }

    for(i=0; i<n; i++)
    {
        for(j=0; j<m; j++)
        {
            if(a[i] == b[j])
            {
                c[i][j] = 1;

                if(i && j)
                {
                    c[i][j] += c[i-1][j-1];
                }
            }
            else
            {
                c[i][j] = 0;
            }
        }
    }

    for(i=0; i<n; i++)
    {
        for(j=0; j<m; j++)
        {
            if(c[i][j] > s)
            {
                s = c[i][j];
                t = i;
            }
        }
    }

    for(i=0; i<n; i++)
    {
        free(c[i]);
        c[i] = NULL;
    }

    free(c);
    c = NULL;

    return s;
}

int main()
{
    char a[1024];
    char b[1024];
    int m;
    int n;
    int z;

    scanf("%s", a);
    scanf("%s", b);

    n = strlen(a);
    m = strlen(b);

    if(n >= m)
    {
        z = func(a, n, b, m);
    }
    else
    {
        z = func(b, m, a, n);
    }

    printf("%d\n", z);

    return 0;
}

########3.编译源码

$ gcc -o example examle.c -std=c89

4.运行及其结果

$ ./example
hello
dwedohell 
4

相关文章

  • c语言求最长公共子串长度

    1.解题思路    将两个字符串组成二维数组,相同的值为1,不同的值为0,同时在对角线上叠加,矩阵中的最大值则为最...

  • 最长公共 / 对称字串

    求最长对称字串是求最长公共子串的变形.. (๑˘ ˘๑) 最长公共子串 Longest Common Subseq...

  • 两个字符串的最长公共子串的长度

    题目 两个字符串的最长公共子串的长度例如:“ABCDGH”和“AEDFHR”的最长公共子串为“ADH”,长度为3。...

  • poj 2774 二分+hash

    poj 2774求两个字符串的最长公共子串,可以二分长度,把A串中长度为mid的子串的hash值存入hash ta...

  • HDU 1503 Advanced Fruits 最长公共子串应

    LCS 算法应用,求出最长公共子串,而非长度。

  • 动态规划

    1、求最长公共子序列 2、求最长公共子串 3、0-1背包问题 4、最短编辑距离

  • 最长公共子串

    问题: 找出最长、连续的子字符串 思路: 遍历X、Y的所有子字符串,找出最长公共后缀,则最长公共后缀的长度就是最长...

  • 求字符串长度(c语言笔记)

    求字符串长度(c语言笔记) -------------------------------------------...

  • 每天一道算法题18

    【最长公共子序列,子串】给定两个字符串上str1 和 str2, 求两个字符的最长公共子序列和最长公共子串。 最长...

  • 第八届蓝桥杯 最大公共子串 Java A组

    标题:最大公共子串 最大公共子串长度问题就是:求两个串的所有子串中能够匹配上的最大长度是多少。 比如:"abcdk...

网友评论

      本文标题:c语言求最长公共子串长度

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