【DP】Edit Distance
来源:互联网 发布:淘宝手机宝贝尺寸 编辑:程序博客网 时间:2024/05/16 11:05
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
参考:http://blog.csdn.net/u011095253/article/details/9248103
图中表示的是,将Park变成Spake的最小距离,假设Park为String1,Spake为String2
dp[i][j] 表示从String1的前i位,变到String2的前j位,最小需要多少改变
比如我们看矩阵的第一行,分别代表从" "(空字符)变到"s", 变到"sp",变到"spa",变到"spak",变到"spake" 需要多少次改变,因为每次只能选择往上添加一个字符,所以累加操作数分别为1,2,3,4,5
同理,矩阵的第一列分别代表从"p" 变到” “(空字符),从”pa“变空,从”par“变空,从"park"变空需要多少次改变,因为每次只能选择删去一个字符,所以累加操作数分别为1,2,3,4
解法:将字符串的比较换算成矩阵
public class Solution { public int minDistance(String word1, String word2) { int len1 = word1.length(); int len2 = word2.length(); int d[][] = new int[len1+1][len2+1]; d[0][0] = 0; for(int i=1; i<=len1; i++){ d[i][0] = d[i-1][0] + 1; } for(int j=1; j<=len2; j++){ d[0][j] = d[0][j-1] + 1; } for(int i=1; i<=len1; i++){ for(int j=1; j<=len2; j++){ if(word1.charAt(i-1) == word2.charAt(j-1)) d[i][j] = d[i-1][j-1]; else //d[i-1][j-1]表示替换,d[i-1][j]表示增加一个字符,d[i][j-1]表示减少一个字符 d[i][j] = 1 + Math.min(d[i-1][j-1] , Math.min(d[i-1][j], d[i][j-1])); } } return d[len1][len2]; }}
0 0
- 4.Edit Distance【dp】
- 【DP】Edit Distance
- Leetcode dp Edit Distance
- [leetcode][DP] Edit Distance
- LeetCode Edit Distance DP
- [LeetCode] Edit Distance(!!!!!DP)
- Edit Distance(dp)
- Edit Distance(dp)
- leetcode---edit-distance---dp
- Leetcode-Edit Distance(dp)
- 72:Edit Distance【DP】【字符串】
- leetcode -- Edit Distance -- 重点dp
- leetcode 72. Edit Distance DP
- [LeetCode] DP 之 Edit Distance
- 【DP】 Shortest Edit Distance in C
- POJ 3356 AGTC(经典DP Edit Distance)
- 72. Edit Distance 动态规划dp
- Leetcode 72 Edit Distance DP好题
- java设计模式@ 工厂方法模式
- 编译性语言、解释性语言和脚本语言
- 1038. 二哥的约瑟夫
- Leetcode_best-time-to-buy-and-sell-stock(c++ and python version)
- NYOJ07街道的最短距离
- 【DP】Edit Distance
- 【算法学习】线性时间排序-计数排序、基数排序和桶排序详解与编程实现
- I - I-number
- C++小结-选择题
- 精确表达浮点数
- hdu 2159 FATE 笔记
- Oracle安装错误ora-00922
- 非模态对话框
- Objective_C中常见的集合类