问题描述:
给定两个字符串A和B,要用最少的操作将字符串A转换成字符串B。其中字符串操作包括:
(1)删除一个字符(Insert a character)
(2)插入一个字符(Delete a character)
(3)修改一个字符(Replace a character)
将字符串A转换成B串所用的最少字符操作数称为字符串A到 B的编辑距离,又称为Levenshtein距离,是在1965年,俄罗斯数学家Vladimir Levenshtein提出的。
问题分析:动态规划思想
(1)、dp[i][j]表示将字符串 A[0: i-1] 转变为 B[0: j-1] 的最小步骤数。
(2)、边界情况:
当 i = 0 , 即 A 串为空时,那么转变为 B 串就是不断添加字符,dp[0][j] = j。
当 j = 0,即 B 串为空时,那么转变为 B 串就是不断删除字符,dp[i][0] = i。
(3)、对应三种字符操作方式:
插入操作:dp[i][j - 1] + 1 相当于为 B 串的最后插入了 A 串的最后一个字符;
删除操作:dp[i - 1][j] + 1 相当于将 B 串的最后字符删除 ;
替换操作:dp