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

来源:互联网 发布:mac上好的音乐播放器 编辑:程序博客网 时间:2024/04/29 02:31

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

#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);    }

结果是:


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

0 0