zoukankan      html  css  js  c++  java
  • leetcodedp编辑距离问题两个字符串的删除操作

    package dp.minDistance2;
    
    /**
     * 583. 两个字符串的删除操作
     * 给定两个单词 word1 和 word2,找到使得 word1 和 word2 相同所需的最小步数,每步可以删除任意一个字符串中的一个字符。
     *
     *
     *
     * 示例:
     *
     * 输入: "sea", "eat"
     * 输出: 2
     * 解释: 第一步将"sea"变为"ea",第二步将"eat"变为"ea"
     *
     *
     * 提示:
     *
     * 给定单词的长度不超过500。
     * 给定单词中的字符只含有小写字母。
     * 通过次数57,530提交次数91,700
     */
    public class minDistance2 {
    
        /***
         * 和编辑距离类似,只是 只有删除一种操作,那就是删除 其中一个或者都删除
         * @param word1
         * @param word2
         * @return
         */
        public static int minDistance(String word1, String word2) {
            int len1 = word1.length();
            int len2 = word2.length();
            char[] char1 = word1.toCharArray();
            char[] char2 = word2.toCharArray();
    
            int[][] dp = new int[len1 + 1][len2 + 2];
    
            //初始化 和空字符串比较,需要几步完成
            for (int i = 0; i <= len1; i++) {
                dp[i][0] = i;
            }
            for (int i = 0; i <= len2; i++) {
                dp[0][i] = i;
            }
            //相同就跳过,否则就取三种操作中最小的
            for (int i = 1; i <= len1; i++) {
                for (int j = 1; j <= len2; j++) {
                    if (char1[i - 1] == char2[j - 1]) {
                        dp[i][j] = dp[i - 1][j - 1];
                    } else {
                        dp[i][j] = Math.min(Math.min(dp[i - 1][j] + 1, dp[i][j - 1] + 1), dp[i - 1][j - 1] + 2);
                    }
                }
            }
            return dp[len1][len2];
        }
    
        public static void main(String[] args) {
            String word1 = "sea", word2 = "eat";
            System.out.println( minDistance(word1,word2));
        }
    
    }
    
    
    不会,我可以学;落后,我可以追赶;跌倒,我可以站起来!
  • 相关阅读:
    python学习笔记- day10-4【问题:为什么python的多线程不能利用多核CPU?】
    python学习笔记-day10-3【日志模块logging】
    python学习笔记-day10-2【多进程,多线程】
    python学习笔记-day10-01-【 类的扩展: 重写父类,新式类与经典的区别】
    day12-HTML基础之DOM操作
    day12-HTML基础之CSS
    HTTP原理
    day12-HTML
    day11-Jenkins
    day11-python学习笔记(二十六)yaml,ddt
  • 原文地址:https://www.cnblogs.com/xiaoshahai/p/15770044.html
Copyright © 2011-2022 走看看