首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

编辑距离算法兑现

2012-09-27 
编辑距离算法实现(1)编辑距离是测量一个字符串转换成另外一个字符串需要操作(操作包括: 插入删除置换)的最

编辑距离算法实现

(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));   }}



热点排行