• LeetCode-72.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:

    1. Insert a character
    2. Delete a character
    3. 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')

    时间复杂度为O(mn)
    public int minDistance(String word1, String word2) {//dp mytip
            int[][] dp = new int[word1.length()+1][word2.length()+1];//word1前i个字符和word2前j个字符最少的改变次数
            for(int i=1;i<=word1.length();i++){//相当于word1和word2前同时加一个相同的字符,并初始化
                dp[i][0] = i;
            }
            for(int i=1;i<=word2.length();i++){
                dp[0][i]=i;
            }
            for(int i=0;i<word1.length();i++){
                for(int j=0;j<word2.length();j++){
                    if(word1.charAt(i)==word2.charAt(j)){//如果i和j相同不需要操作
                        dp[i+1][j+1]=dp[i][j];
                    }
                    else{//如果不同,判断增删改,哪个操作更少
                        int min = dp[i][j+1]>dp[i+1][j]?dp[i+1][j]:dp[i][j+1];
                        min = min>dp[i][j]?dp[i][j]:min;
                        dp[i+1][j+1]=min+1;
                    }
                }
            }
            return dp[word1.length()][word2.length()];
        }

    空间上可优化 只保存当前行和上一行

    还可以适用BFS

  • 相关阅读:
    iOS微信打开App
    HTTP请求中的Form Data与Request Payload的区别
    iPhone设备分辨率一览
    iOS JS与原生交互(全集)
    iOS与导航相关的都在这
    iOS论App推送方案
    iOS接收远程通知响应方法
    iOS10以前的本地通知和远程通知
    手写一个MVVM
    react组件中返回并列元素的方法
  • 原文地址:https://www.cnblogs.com/zhacai/p/10661858.html
Copyright © 2020-2023  润新知