LeetCode - Edit Distance
2015-12-31 15:32
344 查看
题目:
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
思路:
动态规划,dp(i,j)指(i-1)和(j-1)位置需要多少次变换才能相等,若word1[i-1]==word2[j-1],那么dp(i,j)=dp(i-1,j-1),否则的话,则是从dp(i-1,j-1),dp(i,j-1),dp(i-1,j)中选择一个最小值,然后再加1.
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
思路:
动态规划,dp(i,j)指(i-1)和(j-1)位置需要多少次变换才能相等,若word1[i-1]==word2[j-1],那么dp(i,j)=dp(i-1,j-1),否则的话,则是从dp(i-1,j-1),dp(i,j-1),dp(i-1,j)中选择一个最小值,然后再加1.
package dp; public class EditDistance { public int minDistance(String word1, String word2) { int m = word1.length(); int n = word2.length(); int[][] dp = new int[m + 1][n + 1]; for (int i = 0 ;i <= m ; ++i) dp[i][0] = i; for (int i = 0; i <= n; ++i) dp[0][i] = i; 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] = 1 + Math.min(Math.min(dp[i - 1][j - 1], dp[i][j - 1]), dp[i - 1][j]); } } } return dp[m] ; } public static void main(String[] args) { // TODO Auto-generated method stub EditDistance e = new EditDistance(); System.out.println(e.minDistance("a", "b")); System.out.println(e.minDistance("abc", "bc")); System.out.println(e.minDistance("abc", "def")); System.out.println(e.minDistance("abcdefg", "bcdefgh")); System.out.println(e.minDistance("abc", "cba")); } }
相关文章推荐
- Android加载Gif图片的一般方法:Movie实现
- Macbook Pro Retina实现OSX10.10 Yosemite 和Win7双系统(Win7多分区)
- studio好用的插件
- Swift的基础,操作符,字符串和集合类型
- zookeeper集群环境安装配置
- 工作流待办事项消息提醒
- Ajax发送POST请求的心路历程
- tyvj p1008 传球游戏
- android基础:android页面添加滚动条
- 【Android】 加解密算法 HMAC 的使用
- 自定义控件例如LinearLayout 的三种方法
- 第<3>章 Typeglob和符号表
- 03:求整数的和与均值
- [Linux] 查看jar包内容
- 1217递归下降语法分析程序设计
- Android编程动态修改RelativeLayout宽高的方法
- Click事件在显示和隐藏中的BUG
- VisualC# winform窗体应用程序 语句加this有的怎么不加?
- 论一个职业讲师的自我修养
- python实现嵌套列表、字典按某一元素去重复