• leetcodedp72


    /**
     * <p>给你两个单词&nbsp;<code>word1</code> 和&nbsp;<code>word2</code>, <em>请返回将&nbsp;<code>word1</code>&nbsp;转换成&nbsp;<code>word2</code> 所使用的最少操作数</em> &nbsp;。</p>
     *
     * <p>你可以对一个单词进行如下三种操作:</p>
     *
     * <ul>
     * <li>插入一个字符</li>
     * <li>删除一个字符</li>
     * <li>替换一个字符</li>
     * </ul>
     *
     * <p>&nbsp;</p>
     *
     * <p><strong>示例&nbsp;1:</strong></p>
     *
     * <pre>
     * <strong>输入:</strong>word1 = "horse", word2 = "ros"
     * <strong>输出:</strong>3
     * <strong>解释:</strong>
     * horse -&gt; rorse (将 'h' 替换为 'r')
     * rorse -&gt; rose (删除 'r')
     * rose -&gt; ros (删除 'e')
     * </pre>
     *
     * <p><strong>示例&nbsp;2:</strong></p>
     *
     * <pre>
     * <strong>输入:</strong>word1 = "intention", word2 = "execution"
     * <strong>输出:</strong>5
     * <strong>解释:</strong>
     * intention -&gt; inention (删除 't')
     * inention -&gt; enention (将 'i' 替换为 'e')
     * enention -&gt; exention (将 'n' 替换为 'x')
     * exention -&gt; exection (将 'n' 替换为 'c')
     * exection -&gt; execution (插入 'u')
     * </pre>
     *
     * <p>&nbsp;</p>
     *
     * <p><strong>提示:</strong></p>
     *
     * <ul>
     * <li><code>0 &lt;= word1.length, word2.length &lt;= 500</code></li>
     * <li><code>word1</code> 和 <code>word2</code> 由小写英文字母组成</li>
     * </ul>
     * <div><div>Related Topics</div><div><li>字符串</li><li>动态规划</li></div></div><br><div><li> 2458</li><li> 0</li></div>
     */
    
    //leetcode submit region begin(Prohibit modification and deletion)
    class Solution {
        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(dp[i - 1][j] + 1, Math.min(dp[i][j - 1] + 1, dp[i - 1][j - 1] + 1));
                    }
                }
            }
            return dp[m][n];
        }
    }
    //leetcode submit region end(Prohibit modification and deletion)
    
    
  • 相关阅读:
    上海社保,统筹内不能转出的疑惑
    c# 代理IP获取通用方法
    element-ui 的el-button组件中添加自定义颜色和图标的实现方法
    前端实现打印功能
    elementUI表格合并单元格
    webpack打包图片资源找不到问题
    Webstorm/IntelliJ Idea 过期破解方法
    ES6 Promise 用法讲解
    移动端开发
    Stylus的基础用法
  • 原文地址:https://www.cnblogs.com/xiaoshahai/p/16449840.html
Copyright © 2020-2023  润新知