Loading...

编辑距离-手撕

在这里插入图片描述

求解代码

这道题面试遇到过,是一道比较经典的动态规划题。

先求出word1和word2的长度,然后把初始条件和状态转移方程写出来,基本上这题就完成了。

初始条件

当j为0时,执行删除操作;

当i为0时,执行插入操作。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public int minDistance(String word1,String word2){
		int m = word1.length();
		int n = word2.length();

		int[][] dp = new int[m+1][n+1];

		for(int i=0;i<=m;i++){
			dp[i][0]=i;
		}
		for(int j=0;j<=n;j++){
			dp[0][j]=j;
		}

		for(int i=1;i<=m;i++){
			for(int j=1;j<=n;j++){
				if(word1.charAt(i-1)==word2.charAt(j-1)){
					dp[i][j]=dp[i-1][j-1];
				}else{
					dp[i][j]=Math.min(Math.min(dp[i-1][j],dp[i][j-1]),dp[i-1][j-1])+1;
				}
			}
		}
		return dp[m][n];
	}
Code Road Record