计算字符串的相似度(编辑距离)为了判断字符串的相似程度,定义了一套操作方法来把两个不相同的字符串变得相同,具体的操作方法为: 1.修改一个字符。2.增加一个字符。3.删除一个字符。
/*
求两个字符串的编辑距离
如A xabcdae与B xfdfa
by leowang
*/
#include<iostream>
#include<cstring>
using namespace std;
int min(int a,int b,int c)
{
if(a<b)
{
if(a<c)
{
return a;
}else return c;
}else{
if(b<c)
{
return b;
}else return c;
}
}
int editDistance(const char*strA,const char *strB)
{
const int lenA=strlen(strA);
const int lenB=strlen(strB);
int dp[lenA+1][lenB+1];
for(int i=0;i<=lenA;i++)
dp[i][0]=i;
for(int i=0;i<=lenB;i++)
dp[0][i]=i;
for(int i=1;i<=lenA;i++)
{
for(int j=1;j<=lenB;j++)
{
if(strA[i-1]==strB[j-1])
{
dp[i][j]=dp[i-1][j-1];
}else{
dp[i][j]=min(dp[i-1][j-1],dp[i-1][j],dp[i][j-1])+1;
}
}
}
return dp[lenA][lenB];
}
int main()
{
char *A="xabcdae";
char *B="xfdfa";
cout<<editDistance(A,B)<<endl;
}