A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

//10、 找出多个字符串中的最大公共子字符串,如“nbitheimanb”和“itheia”的最大子串是:”ithei”。(C语言)
#include<stdio.h>
#include<string.h>
int main()
{
        //定义变量i,j,k分别用于for循环,count为相同字符个数,max相同字符最多的一组,max取最大时,last记录最后一个字符的位置。
        int i = 0,j = 0,k = 0,count = 1,max = 0,last = 0;
        //定义两个数组,分别放置两个字符串
        char a[50],b[50];
        printf("请输入第一个字符串:\n");
        scanf("%s",a);
        printf("请输入第二个字符串:\n");
        scanf("%s",b);
        //用for循环遍历两个数组,对其中的元素进行比较,如果啊a[i]=b[j]出现相同,再比较下一对字符的a[i+1]=b[j+1],如果相同则count++,因为count
        //本来取一所以现在计数的长度,正好为子字符串的公共长度。因为一个字符串可能出现多个相同的字符串,我们要找到最大的字符串所以,要求其最
        //并对count的最大值做记录,再记录下此时i的值,然后输出最大公共字符串。
        for(i=0;i<=(strlen(a));i++)
        {
                for(j=0;j<=(strlen(b));j++)
                {
                        if(a[i]==a[j])
                        {
                                if(a[i+1]==a[j+1])
                                {
                                        count++;
                                        if(count>max)
                                        {
                                                last=i;
                                                max=count;
                                        }
                                        i++;
                                        j++;
                                }
                        }
                }
        }
        //输出最大子字串
        printf("最大的子字串为");
        for(k=last-max+1;k<last;k++)
        {
                printf("%c",a[k]);
        }
        printf("\n");
}

2 个回复

倒序浏览
运行不出结果来啊,求解释啊。
回复 使用道具 举报
no没人管
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马