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