void LCS1(const char *pstr1, const char *pstr2)
{
if(!pstr1 || !pstr2)
return;
size_t len=strlen(pstr1);
size_t i=1;
size_t max=0;
size_t cnt=0;
const char *ptmp1=pstr1;
const char *ptmp2=pstr2;
const char *pbeg1=NULL;
const char *pbeg2=NULL;
while(i<=len || *(pstr2+i-len))
{
ptmp1=i<=len ? pstr1+len-i : pstr1;
ptmp2=i<=len ? pstr2: pstr2+i-len;
while(*ptmp1&&*ptmp2)
{
if(*ptmp1==*ptmp2)
++cnt;
else
{
if(cnt>max)
{
max=cnt;
pbeg1=ptmp1-cnt;
pbeg2=ptmp2-cnt;
}
cnt=0;
}
++ptmp1;
++ptmp2;
}
if(cnt>max)
{
max=cnt;
pbeg1=ptmp1-cnt;
pbeg2=ptmp2-cnt;
}
cnt=0;
++i;
}
// printf("The LCS is: ");
// for(size_t i=0; i<max; ++i)
// printf("%c", *(pbeg1+i));
// printf("\n Length=%u", max);
}
{
if(!pstr1 || !pstr2)
return;
size_t len=strlen(pstr1);
size_t i=1;
size_t max=0;
size_t cnt=0;
const char *ptmp1=pstr1;
const char *ptmp2=pstr2;
const char *pbeg1=NULL;
const char *pbeg2=NULL;
while(i<=len || *(pstr2+i-len))
{
ptmp1=i<=len ? pstr1+len-i : pstr1;
ptmp2=i<=len ? pstr2: pstr2+i-len;
while(*ptmp1&&*ptmp2)
{
if(*ptmp1==*ptmp2)
++cnt;
else
{
if(cnt>max)
{
max=cnt;
pbeg1=ptmp1-cnt;
pbeg2=ptmp2-cnt;
}
cnt=0;
}
++ptmp1;
++ptmp2;
}
if(cnt>max)
{
max=cnt;
pbeg1=ptmp1-cnt;
pbeg2=ptmp2-cnt;
}
cnt=0;
++i;
}
// printf("The LCS is: ");
// for(size_t i=0; i<max; ++i)
// printf("%c", *(pbeg1+i));
// printf("\n Length=%u", max);
}