编程之美 3.3 计算字符串的相似度
int calcStringDistance(string strA,int pABegin,int pAEnd,string strB,int pBBegin,int pBEnd)
{
if(pABegin>pAEnd)
{
if(pBBegin>pBEnd)
{
return 0;
}else{
return pBEnd-pBBegin+1;
}
}
if(pBBegin>pBEnd)
{
if(pABegin>pAEnd)
{
return 0;
}else{
return pAEnd-pABegin+1;
}
}
if(strA[pABegin] == strB[pBBegin])
{
return calcStringDistance(strA, pABegin+1,pAEnd, strB, pBBegin+1, pBEnd);
}else{
int t1=calcStringDistance(strA, pABegin, pAEnd, strB, pBBegin+1, pBEnd);
int t2=calcStringDistance(strA, pABegin+1,pAEnd, strB, pBBegin, pBEnd);
int t3=calcStringDistance(strA, pABegin+1,pAEnd, strB, pBBegin+1, pBEnd);
//cout << t1 << " "<< t2 << " "<< t3 << endl;
t1 = (t1<t2 ? t1:t2);
t3 = (t3<t1 ? t3:t1);
return t3+1;
}
}