C语言:分别输入两段字符串,并找出其中的最大公共字符串

面试中遇到的,后来看到了有大神的解答,有的还是不大明白,就把自己的贴出来:

#include<stdio.h>
#include<string.h>
void m_p_str(char *str_1,char *str_2)
{
    int i,j,k;
    int str_1_len = strlen(str_1);
    int str_2_len = strlen(str_2);	
    int index = 0;//记录最大公共字符下标开始的位置
	int num = 0;//记录最大公共的个数
    for(i=0;i<str_1_len;i++)
    {
       for(j=0;j<str_2_len;j++)
        {
		   if(str_1[i]==str_2[j])//如果有相同的元素,则同时都往后面移动
            {                
                for(k=1;str_1[i+k]==str_2[j+k]&&str_2[j+k]!='\0'&&str_1[i+k]!='\0';k++)
                {
                    if(k>num)//比较看是不是最长的哪一个
                    {
                        num=k;//如果是,记录其最大公共的个数
                        index = i;//并记录其下标开始的位置                        
                    }
                }  
            }
        }        
    }
    if(num==0)//即最大公共的个数为0
    {
        printf("这两个字符串中无公共字符!\n");
    }
    else
    {
        printf("这两个字符串最大公共字符串是:\t");       
        for(i=0;i<=num;i++)
        {
            printf("%c",str_1[index+i]);
        }
		printf("\n");
    }
	printf("公共字符从第:  %d   个开始\n",index+1);
	printf("公共字符最多一共有:  %d   个\n",num);	
    printf("检索完毕!\n");      
}
void  main()
{        
    char str_1[100];
    char str_2[100];

	printf("请输入字符串一:\t");
	gets(str_1);
	printf("请输入字符串二:\t");
	gets(str_2); 
    m_p_str(str_2,str_1);    
}

结果是:


欢迎讨论,共同学习--------一个码农的成长历程

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值