黑马程序员技术交流社区

标题: 请教c语言 [打印本页]

作者: 桑雅    时间: 2015-1-3 22:48
标题: 请教c语言
找出多个字符串中的最大公共子字符串,如“nbitheimanb”和“itheia”的最大子串是:”ithei”。
作者: ocean45    时间: 2015-1-3 23:32
#include <stdio.h>  
#include <string.h>  
  
void same_str( char *str1, char const *str2, char const *str3 );  
  
void main()  
{  
    char str1[10],str2[30],str3[30];  
      
    gets( str2 );  
    gets( str3 );  
  
    same_str( str1, str2, str3 );  
  
    printf("/n%s/n",str1);  
}  
  
void same_str( char *str1, char const *str2, char const *str3 )  
{  
    int i,j,k,len,max=0,n=0,len2,len3;  
    char *temp;  
  
    if ( strlen( str2 ) < strlen( str3 ) ) /*为了保证外层循环的那个字符串总是最长的*/  
    {  
        temp = str2;  
        str2 = str3;  
        str3 = temp;  
    }  
  
  
    for ( i=0; *(str2+i)!='/0'; i++ )  
    {  
        len = 0;  
        for ( j=0,k=i; *(str3+j)!='/0'&&*(str2+k)!='/0'; j++,k++ )  
        {  
            if ( *(str2+k) == *(str3+j) )  
            {  
                len++;            
            }  
            else  /*当下一个字符不相同时,要避免相隔相同的字母len累加*/  
            {  
                if ( max < len )  
                {  
                    max = len;  
                    n = k-len;  
                }  
                len = 0;  
            }  
        }  
        if ( max < len )  /*当一个字符串的末尾字符串相等时*/  
        {  
            max = len;  
            n = k-len;  
            len = 0;  
        }  
  
    }         
         
  
    for ( j=0; j<max; j++,n++ )  
        *str1++ = *(str2+n);  
    *str1 = '/0';  
}  
作者: paldvel    时间: 2015-1-3 23:59
这是考试题么




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