黑马程序员技术交流社区

标题: 找最大字串 [打印本页]

作者: 15342193033    时间: 2015-1-6 08:59
标题: 找最大字串
如"uiweithame"   和  "ithama"

作者: shicuf    时间: 2015-1-6 11:50
昨晚刚写了一个很笨的方法,经典实现还没来得及做,现在还需要吗?
作者: 风淡淡    时间: 2015-1-6 12:22
我的面试题,代码因为紧张写的有错误,更正了发出来,大家看看吧,可能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;               
       
}
作者: 风淡淡    时间: 2015-1-6 12:25
输出改为
for(int i=start;i<(max+length);i++) // 输出
                {
                        printf("最大公共字符串是:%c",longstr[i]);
                }
                printf("\0");
作者: 风淡淡    时间: 2015-1-6 12:41
请大神点评吧
作者: 风淡淡    时间: 2015-1-7 01:18
刚才装好虚拟机一贴代码,错误一堆啊
作者: 张传宾    时间: 2015-1-7 23:58
看清题目,在多个字符串中找最大公共子串!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2