• 072 Edit Distance 编辑距离


    给出两个单词 word1 和 word2,找出将 word1 转换成 word2 所使用的最少的步骤数 (每个操作记为一步)。
    你可以对一个单词进行以下三种操作:
    a) 插入一个字符
    b) 删除一个字符
    c) 替换一个字符
    详见:https://leetcode.com/problems/edit-distance/description/

    Java实现:

    class Solution {
        public int minDistance(String word1, String word2) {
            int m=word1.length();
            int n=word2.length();
            //dp[i][j]表示从word1的前i个字符转换到word2的前j个字符所需要的步骤
            int[][] dp=new int[m+1][n+1];
            //先给这个二维数组dp的第一行第一列赋值,因为第一行和第一列对应的总有一个字符串是空串,于是转换步骤完全是另一个字符串的长度。
            for(int i=0;i<=m;++i){
                dp[i][0]=i;
            }
            for(int j=0;j<=n;++j){
                dp[0][j]=j;
            }
            //当word1[i] == word2[j]时,dp[i][j] = dp[i - 1][j - 1],其他情况时,dp[i][j]是其左,左上,上的三个值中的最小值加1
            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-1][j],dp[i][j-1]))+1;
                    }
                }
            }
            return dp[m][n];
        }
    }
    

    参考:http://www.cnblogs.com/grandyang/p/4344107.html

    http://www.cnblogs.com/lihaozy/archive/2012/12/31/2840152.html

  • 相关阅读:
    C++ 通用排序算法之remove
    Unity 使用
    Network: unavailable Jim
    lodash 防抖、节流 Jim
    echarts超出容器宽度解决办法 Jim
    Vue中按需引入ECharts、ECharts响应图表 Jim
    node 生成一个唯一的机器码 Jim
    vueantd 表格Y轴滚动,表头与内容不对齐问题 Jim
    jerry_luo_teach
    基于Centos7详细安装wordpress
  • 原文地址:https://www.cnblogs.com/xidian2014/p/8708310.html
Copyright © 2020-2023  润新知