72.Edit-Distance

72. Edit Distance

题目地址

https://leetcode.com/problems/edit-distance/ https://www.jiuzhang.com/solutions/edit-distance

题目描述

Given two words word1 and word2, find the minimum number of operations required to convert word1 to word2.

You have the following 3 operations permitted on a word:

Insert a character
Delete a character
Replace a character
Example 1:

Input: word1 = "horse", word2 = "ros"
Output: 3
Explanation: 
horse -> rorse (replace 'h' with 'r')
rorse -> rose (remove 'r')
rose -> ros (remove 'e')
Example 2:

Input: word1 = "intention", word2 = "execution"
Output: 5
Explanation: 
intention -> inention (remove 't')
inention -> enention (replace 'i' with 'e')
enention -> exention (replace 'n' with 'x')
exention -> exection (replace 'n' with 'c')
exection -> execution (insert 'u')

思路

代码

Approach #1 Dynamic Programming

从两个字符串的最后的位置开始考虑:

如果最后两个字符(i,j)相等,最后两个字符就不要配对,所以等于 minDistance(s1[0..i-1],s2[0...j-1]) 如果最后两个字符不相等: 说明要编辑,具体可以分为三种情况:

  • 如果 s1[i-1]和s2[j]可以配对,那我就删除s1[i]即可(删除)

  • 如果 s1[i]和s2[j-1]可以配对,那我就在s1的后面加上s2[j]即可(插入)

  • 如果 s1[i-1]和s2[j-1]可以配对,那我就把s1[i]修改成s2[j]即可

Approach #2

Last updated

Was this helpful?