您的位置:首页 > 其它

LeetCode—72.Edit Distance

2015-11-03 16:55 232 查看
思路:动态规划。比较word1和word2各自位置上的某两个字符,如果这两个字符相等,那么答案等于各自去掉这个字符的答案,如果不等于,则等于增删改3种方法最小的那种+1。建立二维数组存储动态规划的结果。

public class Solution {
public int minDistance(String word1, String word2) {
int l1=word1.length();
int l2=word2.length();
if (l1*l2==0) {
return l1==0?l2:l1;
}
int[][] board=new int[l1+1][l2+1];
for (int i = 0; i < l1+1; i++) {
board[i][0]=i;
}
for (int i = 0; i < l2+1; i++) {
board[0][i]=i;
}
char[] c1=word1.toCharArray();
char[] c2=word2.toCharArray();
for (int i = 1; i < l1+1; i++) {
for (int j = 1; j < l2+1; j++) {
if (c1[i-1]==c2[j-1]) {
board[i][j]=board[i-1][j-1];
}else {
board[i][j]=Math.min(Math.min(board[i-1][j], board[i][j-1]), board[i-1][j-1])+1;
}
}
}
return board[l1][l2];
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: