题目描述
字符串编辑距离
字符串的编辑距离,又称为Levenshtein距离,由俄罗斯的数学家Vladimir Levenshtein在1965年提出。是指利用字符操作,把字符串A转换成字符串B所需要的最少操作数。其中,字符操作包括:
删除一个字符
插入一个字符
修改一个字符
例如对于字符串"if"和"iff",可以通过插入一个’f’或者删除一个’f’来达到目的。
思路
动态规划
代码如下
public int mineditdistance(String s1,String s2){
int[][] dp = new int[s1.length()+1][s2.length()+1];
//对dp数组初始化
for ( int i = 0 ; i < dp.length ; i ++ ) dp[i][0] = i;
for ( int j = 0 ; j < dp[0].length ; j ++ ) dp[0][j] = j;
for ( int i = 1 ; i < dp.length ; i ++ ){
for ( int j = 1 ; j < dp[0].length; j ++ ){
if ( s1.charAt(i-1) == s2.charAt(j-1) ) dp[i][j] = dp[i-1][j-1];
else dp[i][j] = min(dp[i-1][j],dp[i][j-1],dp[i-1][j-1])+1;
}
}
return dp[dp.length-1][dp[0].length-1];
}
public int min(int a, int b, int c){
return Math.min(a,Math.min(b,c));
}