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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 15342193033 中级黑马   /  2015-1-6 08:59  /  1322 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

如"uiweithame"   和  "ithama"

6 个回复

倒序浏览
昨晚刚写了一个很笨的方法,经典实现还没来得及做,现在还需要吗?
回复 使用道具 举报
我的面试题,代码因为紧张写的有错误,更正了发出来,大家看看吧,可能5期与我无缘了,分享出来大家学习
checknext(char *str1,char *str2,int i,int j,int *length)
{
        if(str1[i+1]==str2[j+1]&&str[i+1]!='\0'&&str2[j+1]!='\0')
        {
                (*length)++;
                checknext(str[i+1],str[j+1],i+1,j+1,length); // 递归查找下一个相同的字符
        }


}

(void)commStr(char *str1, char *str2)
{
        char *longstr;
        char *shortstr;
        int length = 0;
        int max = 0;
        int start = 0;
        if(str1.length>str2.length)
        {
                longstr = str1;
                shortstr = str2;
        }
        else
        {
                longstr = str2;
                shortstr = str1;       
        }
        for(int i=0;i<longstr.length;i++)  // 遍历
        {       
               
                for(int j =0;j<shortstr.length;j++)
                {
                        if(longstr[i]==shortstr[j])
                        {
                               
                                length = 1;
                                checknext(longstr,shortstr,i,j,&length);
                                if(length>max)
                                {
                                        max = length;
                                        start = i;

                                }
                        }
                }
        }
        if(length == 0)
        {
                printf("没有找到最大公共字符串!\0");
        }
        else
        {
                for(int i=start;i<(max+length);i++) // 输出
                {
                        printf("最大公共字符串是:%c\0",longstr[i]);
                }
        }

}





int main()
{
        char *a = "nbitheimanb";
        char *b = "itheima";
        commStr(a,b);
        return 0;               
       
}
回复 使用道具 举报
输出改为
for(int i=start;i<(max+length);i++) // 输出
                {
                        printf("最大公共字符串是:%c",longstr[i]);
                }
                printf("\0");
回复 使用道具 举报
请大神点评吧
回复 使用道具 举报
风淡淡 来自手机 中级黑马 2015-1-7 01:18:30
地板
刚才装好虚拟机一贴代码,错误一堆啊
回复 使用道具 举报
看清题目,在多个字符串中找最大公共子串!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马