博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LintCode/LeetCode] Edit Distance
阅读量:5966 次
发布时间:2019-06-19

本文共 1364 字,大约阅读时间需要 4 分钟。

Problem

Given two words word1 and word2, find the minimum number of steps required to convert word1 to word2. (each operation is counted as 1 step.)

You have the following 3 operations permitted on a word:

Insert a character

Delete a character
Replace a character

Example

Given word1 = "mart" and word2 = "karma", return 3.

Note

构造dp[i][j]数组,iword1index+1jword2index+1dp[i][j]是将i位的word1转换成j位的word2需要的步数。初始化dp[i][0]dp[0][i]dp[0][0]到它们各自的距离i,然后两次循环ij即可。

理解三种操作:insertion是完成i-->j-1之后,再插入一位才完成i-->jdeletion是完成i-->j之后,发现i多了一位,所以i-1-->j才是所求,需要再删除一位才完成i-->j;而replacement则是换掉word1的最后一位,即之前的i-1-->j-1已经完成,如果word1的第i-1位和word2的第j-1位相等,则不需要替换操作,否则要替换一次完成i-->j

Solution

public class Solution {    public int minDistance(String word1, String word2) {        int m = word1.length(), n = word2.length();        int[][] dp = new int[m+1][n+1];        for (int i = 0; i <= m; i++) {            for (int j = 0; j <= n; j++) {                if (i == 0) dp[i][j] = j;                else if (j == 0) dp[i][j] = i;                else {                    int insert = dp[i][j-1] + 1;                    int delete = dp[i-1][j] + 1;                    int replace = dp[i-1][j-1] + (word1.charAt(i-1) == word2.charAt(j-1) ? 0 : 1);                    dp[i][j] = Math.min(insert, Math.min(delete, replace));                }            }        }        return dp[m][n];    }}

转载地址:http://kqtax.baihongyu.com/

你可能感兴趣的文章
Eclipse SVN修改用户名和密码
查看>>
架构师的职责都有哪些?
查看>>
Cool!15个超炫的 CSS3 文本特效【上篇】
查看>>
SVN: bdb: BDB1538 Program version 5.3 doesn't match environment version 4.7
查看>>
jsp内置对象作业3-application用户注册
查看>>
android115 自定义控件
查看>>
iOS uuchart 用法
查看>>
c# 多线程 调用带参数函数
查看>>
大型网站系统架构的演化
查看>>
JQuery 如何选择带有多个class的元素
查看>>
The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar
查看>>
VS快速生成JSON数据格式对应的实体
查看>>
Word2vec 模型载入(tensorflow)
查看>>
Linux内核——定时器和时间管理
查看>>
J2EE之初识JSP
查看>>
RabbitMq消息序列化简述
查看>>
别人要访问我的电脑上部署的tomcat,必须关闭防火墙吗?
查看>>
opencv2使用形态学滤波对图像进行边缘及角点检測
查看>>
Git协作流程(转)
查看>>
iOS UI-自动布局(Autoresizing)
查看>>