leetcode72_编辑距离(EditDistance)(超详细版)
题目:
思路:
这个题目不太容易想到使用动态规划来解决,而且动态规划迭代方程也不容易建立。本文首先给出暴力**算法,然后使用动态规划来解决,重点是对动态规划算法的原理进行详细解释。
预备知识
首先要对题目给出的三种字符串操作(插入、删除、替换)有一些基本认识。
(1)首先,这三种操作满足一次性原则。例如:针对同一个字符,编辑一次,不能编辑第二次,二次编辑擦除了第一次编辑的结果;
(2)其次,这三种操作满足互斥性原则。例如:针对同一个字符,编辑之后,不能再次删除,删除后就失去了原先编辑的意义。
总结:(插入、删除、替换)这三种字符串操作满足一次性、互斥性原则。针对字符串A中的某一个字符a,永远只可能对a进行三种操作中的一种。
推论:针对字符串A进行一系列插入、删除、替换操作后得到字符串B,这些操作的先后次序不会影响最终结果。即:将A变换成B的一系列操作步骤,其顺序可以随意调整!!!