时间复杂度(O(n2)) 思想,动态规划
class Solution {
public:
int minDistance(string word1, string word2) {
if(word1.size()==0)return word2.size();
if(word2.size()==0)return word1.size();
vector<vector<int> > vec2v;
for(int k=0;k<word2.size();++k){
vector<int> vec_tmp(word1.size(),0);
vec2v.push_back(vec_tmp);
}
for(int i=0;i<word2.size();++i){
bool mark = true;
for(int j=0;j<word1.size();++j)
if(i==0)
if(j==0)
if(mark&&word2.at(i)==word1.at(j)){
mark = false;
vec2v[i][j]=0;
}else vec2v[i][j]=1;
else
if(mark&&word2.at(i)==word1.at(j)){
mark = false;
vec2v[i][j]=j+1-1;
}else vec2v[i][j]=vec2v[i][j-1]+1;
else
if(j==0)
if(mark&&word2.at(i)==word1.at(j)){
mark = false;
vec2v[i][j]=i+1-1;
}else vec2v[i][j]=vec2v[i-1][j]+1;
else
if(word2.at(i)==word1.at(j)){
vec2v[i][j]=vec2v[i][j-1]<vec2v[i-1][j-1]?vec2v[i][j-1]+(1-mark):vec2v[i-1][j-1];
mark = false;
}else{
int mid_value = vec2v[i][j-1]<vec2v[i-1][j-1]?vec2v[i][j-1]:vec2v[i-1][j-1];
vec2v[i][j]=mid_value<vec2v[i-1][j]?mid_value+1:vec2v[i-1][j]+1;
}
}
return vec2v.back().back();
}
};