zoukankan      html  css  js  c++  java
  • LeetCode

    题目:

    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:

    a) Insert a character
    b) Delete a character
    c) Replace a character

    思路:

    动态规划,dp(i,j)指(i-1)和(j-1)位置需要多少次变换才能相等,若word1[i-1]==word2[j-1],那么dp(i,j)=dp(i-1,j-1),否则的话,则是从dp(i-1,j-1),dp(i,j-1),dp(i-1,j)中选择一个最小值,然后再加1.

    package dp;
    
    public class EditDistance {
    
        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 i = 0; i <= n; ++i)
                dp[0][i] = i;
            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] = 1 + Math.min(Math.min(dp[i - 1][j - 1], dp[i][j - 1]), dp[i - 1][j]);
                    }
                }
            }
            
            return dp[m][n];
        }
        
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            EditDistance e = new EditDistance();
            System.out.println(e.minDistance("a", "b"));
            System.out.println(e.minDistance("abc", "bc"));
            System.out.println(e.minDistance("abc", "def"));
            System.out.println(e.minDistance("abcdefg", "bcdefgh"));
            System.out.println(e.minDistance("abc", "cba"));
            
        }
    
    }
  • 相关阅读:
    C 字符串
    C 函数指针、回调函数
    C 指针
    C 数组、枚举类型enum
    C 函数声明、函数参数
    C 内置函数
    C 流程控制
    C 储存类与运算符
    C变量和常量
    名词解释
  • 原文地址:https://www.cnblogs.com/null00/p/5091896.html
Copyright © 2011-2022 走看看