0
点赞
收藏
分享

微信扫一扫

查找两个字符串的最大公共子串

自信的姐姐 2022-03-11 阅读 33
c语言
#include <stdio.h>
#include <string.h>

int main(void)
{
    char str_1[100] = {0};
    char str_2[100] = {0};
    char match[100], match_lgst[100];
    int m  = 0, m_l = 0;
    printf("input first string:");
    gets(str_1);
    printf("input second string:");
    gets(str_2);
    for(int i = 0;i < strlen(str_1);i++)
    {
	if(str_1[i] != '\0')
	{
	    for(int j = 0;j < strlen(str_2);j++)
	    {
		if(str_2[j] != '\0'){
		    if(str_1[i] == str_2[j]){
		        //注意排除匹配数组的无效数据'\0'
		        while((str_1[i] == str_2[j]) && (str_2[i] != '\0')){
			    match[m] = str_2[j];
			    m++;
			    i++;
			    j++;
			}
			if(m > m_l){
			    //printf("m:%d, m_l:%d\n", m, m_l);
			    m_l = m;
			    memset(match_lgst, 0, strlen(match_lgst));
			    strncpy(match_lgst, match, strlen(match));
			    memset(match, 0, strlen(match));
			}
			m = 0;
		    }
		}
		else{
		    break;
		}
	    }
	}
	else{
	    break;
	}
    }
    if(m_l == 0)
	printf("no match\n");
    else
        printf("m_l:[%d], longest match text:[%s]\n" ,m_l ,match_lgst);

    return 0;
}

举报

相关推荐

0 条评论