#include <stdio.h>
#include <string.h>
/*
比较两字符串,注意不区分大小写,
若遇到相等的字符,则开始计数,若遇到不相等的字符,则重新计数
注意思路:
从某一字符串开始比较,则需要再另一个字符串中找到所有以该字符开头的字符串,
并在此过程中不断更新字符串长度,保存每一步得到的更大的长度值
// 注意大部分用例通过时,看看题意,是不是漏了某种情况,如此题的大小写
abbaabbaa
bbbbbababbabaabbaabba
9
动态规划可参见:(最长公共子串(序列))
https://blog.csdn.net/u010352111/article/details/53980062
*/
int getCommonStrLength(char * s1, char * s2)
{
int len,i,j,k,q;
int count = 0;
int max = 0;
// 先全部转换为小写,去除大小写之分
// 注意大部分用例通过时,看看题意,是不是漏了某种情况,如此处的大小写
for(i=0;s1[i]!='\0';i++){
if(s1[k]>='A' && s1[k]<='Z'){
s1[k] = s1[k]-'A'+'a';
}
}
for(k=0;s2[k]!='\0';k++){
if(s2[k]>='A' && s2[k]<='Z'){
s2[k] = s2[k]-'A'+'a';
}
}
for(i=0;s1[i]!='\0';i++){
for(j=0;s2[j]!='\0';j++){
// 找以s1[i]开头的所有字符串,存储最大的长度值
if(s1[i] == s2[j]){
count = 0;
for(k=i,q=j;s1[k]==s2[q] && s1[k]!='\0' && s2[q]!='\0';q++,k++){
count++;
if(count>max){
max = count;
}
}
}
}
count = 0; // 进入下一轮比较时,将上一次的结果清0,重新累计
}
return max;
}
int main()
{
char s1[10000]="";
char s2[10000]="";
while(scanf("%s %s",s1,s2)!=EOF){
int n;
n = getCommonStrLength(s1,s2);
printf("%d\n",n);
}
return 0;
}