动态规划 字符串编辑距离
来源:互联网 发布:显卡升级软件下载 编辑:程序博客网 时间:2024/05/21 14:48
字符串编辑距离
这个问题是之前看《编程之法》时遇到的,是典型的动态规划问题,在此记录一下。
我认为解决动态规划问题最关键的一步就是写出“动态规划方程”,如果能够顺利写出,后面的代码也就水到渠成了。
题目如下:
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
思路:动态规划
动态规划方程:
#include <string>#include <algorithm>#include <iostream>using namespace std;class Solution{public: int minDistance(string word1, string word2);};int Solution::minDistance(string word1, string word2){ int len1 = word1.size(); int len2 = word2.size(); int dp[len1 + 1][len2 + 1]; for(int i = 0; i <= len1; ++i) { dp[i][0] = i; } for(int j = 0; j <= len2; ++j) { dp[0][j] = j; } int insert_act = 0; int delete_act = 0; int modify_act = 0; for(int i = 1; i <= len1; ++i) { for(int j = 1; j <= len2; ++j) { if(word1[i - 1] == word2[j - 1]) { dp[i][j] = dp[i - 1][j - 1]; } else { insert_act = dp[i][j - 1] + 1; delete_act = dp[i - 1][j] + 1; modify_act = dp[i - 1][j - 1] + 1; dp[i][j] = min(min(insert_act, delete_act), modify_act); } } } return dp[len1][len2];}
阅读全文
0 0
- 动态规划 字符串编辑距离
- 动态规划 - 字符串的编辑距离
- 字符串编辑距离相似度-动态规划
- 动态规划(最小字符串编辑距离实现)
- 动态规划(2)字符串编辑距离
- 【动态规划】字符串编辑距离(Levenshtein距离)算法
- 动态规划 编辑距离
- 编辑距离 动态规划
- 编辑距离--动态规划
- 动态规划 - 编辑距离
- 动态规划---编辑距离
- 字符串的修改(动态规划-最短编辑距离)
- 【动态规划】字符串最小编辑距离Java实现
- 两个字符串的编辑距离-动态规划方法
- 动态规划求字符串之间的编辑距离
- 【动态规划】之字符串编辑距离(难度:2星)
- 动态规划求编辑距离
- 动态规划求编辑距离
- maven中添加lucene支持依赖
- Android Studio+Kotlin初探
- 蓝桥杯第一天
- PAT 1065.单身狗
- mysqldump备份原理及注意事项
- 动态规划 字符串编辑距离
- eclipse的常用快捷键
- 使用ajax技术对内容进行修改,使内容回显到组件框中
- 算法导论——最大堆
- 微信退款相关整理
- 关于Java常见的误解
- mybatis中采用模糊匹配得到另一种用法
- 单次循环,搜索出两个数组中不同的一段数据,把不同的数据存进EEPROM
- 获取和设置用户id以及组id