164 - 72 编辑距离
Last updated
Was this helpful?
Last updated
Was this helpful?
给定两个单词 word1 和 word2,计算出将 word1 转换成 word2 所使用的最少操作数 。
你可以对一个单词进行如下三种操作:
插入一个字符 删除一个字符 替换一个字符
示例 1:
输入: word1 = "horse", word2 = "ros" 输出: 3 解释: horse -> rorse (将 'h' 替换为 'r') rorse -> rose (删除 'r') rose -> ros (删除 'e')
示例 2:
输入: word1 = "intention", word2 = "execution" 输出: 5 解释: intention -> inention (删除 't') inention -> enention (将 'i' 替换为 'e') enention -> exention (将 'n' 替换为 'x') exention -> exection (将 'n' 替换为 'c') exection -> execution (插入 'u')
这个大佬巨牛批。。这个算法还能联系现实。。
关键是,一般题解,最多就解释一下这个题解,思路是什么。但是这个大佬就从头告诉你,怎么从0开始搞出类似的题解。
“授人渔”的大佬。
那么来整理下思路:暴力=>带备忘录(自顶向下)=>动态规划(自底向上)
两个字符串的动态规划,一般用两个指针,从后往前走
具体到这个问题,有几个边界情况base case:
如果两指针对应的字母相等,那么直接跳过
如果一个指针指到头了i==-1
,那么另一个指针就需要吧剩下的内容全部插入
我们只负责计算编辑距离,并不实际上替换掉具体的值。
当然是超时了了
Runtime: 84 ms, faster than 98.37% of Python3 online submissions for Edit Distance.
Memory Usage: 15.1 MB, less than 92.31% of Python3 online submissions for Edit Distance.