字符串距离
指对于两个字符串,可以通过增加,减少或删除方式来使得两个字符串相等,执行增加,减少或删除的最少次数即为两个字符串之间的距离。如“workhard”和“workhrrd”两个字符串就可以通过修改第二个字符串中的字符'r'为'a'来使两个字符串相等,此时两个字符串的距离为1
思路
可以利用动态规划(参考《编程之美》),并用一个二维数组record[lenA+1][lenB+1]来记录子问题的解,以避免重复计算子问题。
代码如下:
/**
* 功能:计算两个字符串之间的相似度,采用动态规划求解,并用一个二维数组来记录子问题的解
* 避免重复计算子问题
* @author mwd
* 2013-9-22
*/
import java.math.*;
public class StringDistance {
private int[][] record;//记录已经计算的子问题,可以避免重复计算子问题
/**
* 计算两个字符串之间的距离
* @param