编辑距离12 · Edit Distance12
[抄题]:
给出两个单词word1和word2,计算出将word1 转换为word2的最少操作次数。
你总共三种操作方法:
- 插入一个字符
- 删除一个字符
- 替换一个字符
[思维问题]:
[一句话思路]:
分析双序列变换的所有情况
[输入量]:空: 正常情况:特大:特小:程序里处理到的特殊情况:异常情况(不合法不合理的输入):
[画图]:

[一刷]:
- 由于数组多加了一位,所有的上限都要加1
- Math.min最多一次只能比较2个数
[二刷]:
[三刷]:
[四刷]:
[五刷]:
[五分钟肉眼debug的结果]:
[总结]:
注意上限都要加1
[复杂度]:Time complexity: O(n^2) Space complexity: O(n^2)
[英文数据结构或算法,为什么不用别的数据结构或算法]:
双序列型dp
[其他解法]:
[Follow Up]:
[LC给出的题目变变变]:
583. Delete Operation for Two Strings 只能删除:还是dp
712. Minimum ASCII Delete Sum for Two Strings 加一个ascii转化
[代码风格] :
else热脸贴冷屁股,不要空格,更不要换行
public class Solution {
    /*
     * @param word1: A string
     * @param word2: A string
     * @return: The minimum number of steps.
     */
    public int minDistance(String word1, String word2) {
        //state
        int m = word1.length();
        int n = word2.length();
        //initialization
        int[][] dp = new int[m + 1][n + 1];
        //m == 0
        for (int i = 0; i < n + 1; i++) {
            dp[0][i] = i;
        }
        // n == 0
        for (int i = 0; i < m + 1; i++) {
            dp[i][0] = i;
        }
        //function
        for (int i = 1; i < m + 1; i++) {
            for (int j = 1; j < n + 1; 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(dp[i - 1][j - 1],Math.min(dp[i][j - 1],dp[i - 1][j]));
                }
            }
        }
        //answer
        return dp[m][n];
    }
}
一步编辑
[抄题]:
给你两个字符串 S 和 T, 判断他们是否只差一步编辑。
给你字符串 s = "aDb", t= "adb" 
返回 true
[暴力解法]:
时间分析:
空间分析:
[思维问题]:
原始想法:相差一位字母时,每删一个字母,比较字符串是否相同。问题是没有办法比较字符串是否相同。
[一句话思路]:
- 柿子要找软的捏,从特殊情况讨论开始。
- 相差一位字母时,删除第一个不相同的字母,用(.substring equals不是==号!)比较剩余的字符串是否相同 下图。
[输入量]:空: 正常情况:特大:特小:程序里处理到的特殊情况:异常情况(不合法不合理的输入):
[画图]:

[一刷]:
- 两个字符串长度不符合,直接在返回函数里取反 isOneEditDistance(t, s)
- 用count统计不相同的字母个数,为1时才返回true。
[二刷]:
[三刷]:
[四刷]:
[五刷]:
[五分钟肉眼debug的结果]:
[总结]:
注意简写:return true if a = return a
[复杂度]:Time complexity: O(n) Space complexity: O(n)
[英文数据结构或算法,为什么不用别的数据结构或算法]:
由于已经讨论特殊情况了,比较字符串是否相等即可。不用任何的数据结构、算法
[其他解法]:
[Follow Up]:
[LC给出的题目变变变]:
[代码风格] :
编辑距离12 · Edit Distance12的更多相关文章
- Leetcode之动态规划(DP)专题-72. 编辑距离(Edit Distance)
		Leetcode之动态规划(DP)专题-72. 编辑距离(Edit Distance) 给定两个单词 word1 和 word2,计算出将 word1 转换成 word2 所使用的最少操作数 . 你可 ... 
- 字符串编辑距离(Edit Distance)
		一.问题描述定义字符串编辑距离(Edit Distance),是俄罗斯科学家 Vladimir Levenshtein 在 1965 年提出的概念,又称 Levenshtein 距离,是指两个字符串之 ... 
- [Swift]LeetCode161. 一次编辑距离 $ One Edit Distance
		Given two strings S and T, determine if they are both one edit distance apart. 给定两个字符串S和T,确定它们是否都是是一 ... 
- 编辑距离——Edit Distance
		编辑距离 在计算机科学中,编辑距离是一种量化两个字符串差异程度的方法,也就是计算从一个字符串转换成另外一个字符串所需要的最少操作步骤.不同的编辑距离中定义了不同操作的集合.比较常用的莱温斯坦距离(Le ... 
- Minimum edit distance(levenshtein distance)(最小编辑距离)初探
		最小编辑距离的定义:编辑距离(Edit Distance),又称Levenshtein距离.是指两个字串之间,由一个转成还有一个所需的最少编辑操作次数.许可的编辑操作包含将一个字符替换成还有一个字符. ... 
- Levenshtein Distance算法(编辑距离算法)
		编辑距离 编辑距离(Edit Distance),又称Levenshtein距离,是指两个字串之间,由一个转成另一个所需的最少编辑操作次数.许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符, ... 
- [Irving]字符串相似度-字符编辑距离算法(c#实现)
		编辑距离(Edit Distance),又称Levenshtein距离,是指两个字串之间,由一个转成另一个所需的最少编辑操作次数.许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字 ... 
- 【ZH奶酪】如何用Python实现编辑距离?
		1. 什么是编辑距离? 编辑距离(Edit Distance),又称Levenshtein距离,是指两个字串之间,由一个转成另一个所需的最少编辑操作次数.许可的编辑操作包括将一个字符替换成另一个字符, ... 
- Edit Distance问题在两种编程范式下的求解
		本文已授权 [Coding博客](https://blog.coding.net) 转载 前言 Edit Distance,中文叫做编辑距离,在文本处理等领域是一个重要的问题,以下是摘自于百度百科的定 ... 
随机推荐
- Linux-Zabbix
			###############################安装######################################## 安装部分我写了文档,可能不是很完善 文档如下→→ [ ... 
- Hadoop 2.7.3 分布式集群安装
			1. 集群规划: 192.168.1.252 palo252 Namenode+Datanode 192.168.1.253 palo253 YarnManager+Datanode+Secondar ... 
- 关于open_cursors和session_cached_cursors的参数值(转)
			一.如何正确设置session_cached_cursors参数: 正确设置open_cursors和session_cached_cursors 可以减少sql解析,提高系统性能,那么,如何正确设置 ... 
- python_基础算法
			本篇主要实现九(八)大排序算法,分别是冒泡排序,插入排序,选择排序,希尔排序,归并排序,快速排序,堆排序,计数排序.希望大家回顾知识的时候也能从我的这篇文章得到帮助. 概述 十种常见排序算法可以分为两 ... 
- dockers的容器删除
			1.停用全部运行中的容器: docker stop $(docker ps -q) 2.删除全部容器: docker rm $(docker ps -aq) 3.一条命令实现停用并删除容器: dock ... 
- linux 系统管理 实战技巧
			一.这篇文章讲了什么? 这篇文章很有参考性哈.本来是想等一段时间有更多条技巧后在发布的,不过,突然发现,我是去年的今天在博客园落户了,祝我的博客一周岁快乐,希望以后多分享一些文章啦.所以就把草稿箱的其 ... 
- 关于putty连接百度云linux服务器那些事
			看有活动,30元半年的百度云服务器,就直接买了当练手的玩 买完之后,发现使用putty不能直接连接百度云的centos服务器, 用了putty和ssh都不能连接 试了好几次,都打算尝试用秘钥对的形式了 ... 
- 13.mysql基本查询
			1. 给表起个别名:但是,前面的也是需要进行修改的,否则会报错的: select * from s.name from students as s; 2. 为字段起别名 select s,name a ... 
- zabbix3.4.7 饼图显示问题
			最近安装了zabbix3.4.7,发现系统自带Template OS Linux模版饼图(Pie)有两个问题: Total disk space on / 显示为 no data,也就是没有数据: 把 ... 
- 前端-CSS-9-文本和字体-背景颜色
			字体属性 div{ width: 300px; height: 100px; /*background-color: red;*/ border: 1px solid red; /*设置字体大小 px ... 
