题目:
给你两个单词 word1 和 word2, 请返回将 word1 转换成 word2 所使用的最少操作数 。
你可以对一个单词进行如下三种操作:
插入一个字符
删除一个字符
替换一个字符
代码如下:
class Solution {
public:
int minDistance(string word1, string word2) {
//先得到word1与word2的长度分别为n与m
int n=word1.length();
int m=word2.length();
//如果二者中至少有一个大小为0则需要使用的最少操作数就是不为0的单词的大小(即删除这个单词的次数)
if(m*n==0) return m+n;
//设计DP数组有n+1个元素每个元素为大小为m+1的动态数组
vector<vector<int>> DP(n+1,vector<int>(m+1));
//其中DP[i][j]的意义是word1的前i个单词到word2的前j个单词所使用的最少操作数
//先进行i为0或者j为0的初始化
for(int i=0;i<=n;i++){
DP[i][0]=i;
}
for(int i=0;i<=m;i++){
DP[0][i]=i;
}
//遍历DP数组中的每一个数值得到其应有的值
for(int i=1;i<=n;i++){
for(int j=1;j<=m