编辑距离算法实现

(1)编辑距离是测量一个字符串转换成另外一个字符串需要操作(操作包括: 插入    删除    置换)的最小次数。

          编辑距离可以用来计算两字符串的相似度,另外也可以通过余弦方法来计算两字符串的相似度

(2)算法实现采用动态规划算法,其求解过程类似于求两字符串的最长公共序列(LCS)

           下面是算法实现:

         

public class Distance
{
	   public static int getDistance(String s1, String s2)
	   {
		   int len1 = s1.length();
		   int len2 = s2.length();
		   
		   int[][] d = new int[len1+1][len2+1];
		   int i=0, j=0;
		   for(i=0; i<=len1; i++)
			   d[i][0] = i;
		   for(j=0; j<=len2; j++)
			   d[0][j] = j;
			for (i = 1; i < len1+1; i++)
				for (j = 1; j < len2+1; j++)
				{
					int cost = 1;
					if(s1.charAt(i-1) == s2.charAt(j-1))
					{
						cost = 0;
					}
					int delete = d[i - 1][j] + 1;
					int insert = d[i][j - 1] + 1;
					int substitution = d[i - 1][j - 1] + cost;
					d[i][j] = min(delete, insert, substitution);
			   }
			return (d[len1][len2]);
	   }
	   
	   public static int min(int d,int i,int s)
	   {   
		    int temp = 0;
		    if(d>i)
		    	temp = i;
		    else
		    	temp = d;
		    return s<temp?s:temp;
		}
   
   public static void main(String args[])
   {
	   String s1= "kitten";
	   String s2 = "sitting";
	   System.out.println(Distance.getDistance(s1, s2));
   }
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值