Problem: 72. 编辑距离
文章目录
- 思路
- Code
思路
👨🏫 参考地址
Code
⏰ 时间复杂度:
O
(
n
m
)
O(nm)
O(nm)
🌎 空间复杂度:
O
(
n
m
)
O(nm)
O(nm)
class Solution {
public int minDistance(String s1, String s2)
{
int n = s1.length();
int m = s2.length();
char[] ss1 = s1.toCharArray();
char[] ss2 = s2.toCharArray();
int[][] f = new int[n + 1][m + 1];
// 第一行
for (int j = 1; j <= m; j++)
f[0][j] = f[0][j-1] + 1;
// 第一列
for (int i = 1; i <= n; i++)
f[i][0] = f[i-1][0] + 1;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++)
{
if (ss1[i - 1] == ss2[j - 1])//说明当前位无需处理
f[i][j] = f[i - 1][j - 1];
else//需要处理 当前位采取: 替换 插入 删除 操作数+1
f[i][j] = Math.min(Math.min(f[i - 1][j - 1], f[i][j - 1]), f[i - 1][j]) + 1;
}
return f[n][m];
}
}