LeetCode:Edit Distance
来源:互联网 发布:手机淘宝装修店招 编辑:程序博客网 时间:2024/05/17 01:11
Edit Distance
Total Accepted: 58999 Total Submissions: 204641 Difficulty: Hard
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
Subscribe to see which companies asked this question
Hide Similar Problems
思路:动规
设:word1="abcd",word2="bbc"。
则其状态转移过程为:
Ø a b c d
Ø 0 1 2 3 4
b 1 1 1 2 3
b 2 2 1 2 3
c 3 3 2 1 2
其状态转移方程为:
dp[i][j] = dp[i-1][j-1],if word1[i-1]==word2[j-1];dp[i][j] = min(dp[i-1][j-1], dp[i-1][j], dp[i][j-1]) + 1,otherwise;
c++ code:
/* Ø a b c dØ 0 1 2 3 4b 1 1 1 2 3b 2 2 1 2 3c 3 3 2 1 2*/class Solution {public: int minDistance(string word1, string word2) { int m = word1.length(); int n = word2.length(); int dp[m+1][n+1]; for(int i=0;i<=m;i++) dp[i][0] = i; // 初始化第一列 for(int j=0;j<=n;j++) dp[0][j] = j; // 初始化第一行 for(int i=1;i<=m;i++) { for(int j=1;j<=n;j++) { if(word1[i-1]==word2[j-1]) dp[i][j] = dp[i-1][j-1]; else dp[i][j] = min3(dp[i-1][j-1],dp[i-1][j],dp[i][j-1]) + 1; } } return dp[m][n]; } // 自定义函数 int min3(int x, int y,int z) { return min(x,min(y,z)); }};
0 0
- LeetCode: Edit Distance
- LeetCode Edit Distance
- LeetCode: Edit Distance
- [Leetcode] Edit Distance
- leetcode 19: Edit Distance
- [LeetCode] Edit Distance
- [Leetcode] Edit Distance
- LeetCode Edit Distance
- [LeetCode] Edit Distance
- [LeetCode]Edit Distance
- Leetcode: Edit Distance
- [leetcode]Edit Distance
- LeetCode-Edit Distance
- [leetcode] Edit Distance
- LeetCode - Edit Distance
- leetcode之Edit Distance
- leetcode edit distance
- 【leetcode】Edit Distance
- java学习之路--递归
- PAT 1087
- Android获取某应用所申请的权限
- 立体匹配的研究背景以及意义
- UVALive 4730 线段树+并查集
- LeetCode:Edit Distance
- 二维数组有关数据
- Git-flow的使用
- Centos 6.5 Redis 集群部署
- 香蕉派SD卡安装系统(Windws平台工具)
- TP框架基本使用
- JDBC
- 一些关于Ajax总结以及理解
- 《java入门第一季》模拟用户登陆注册案例集合版