给定两个字符串,已知可以使用三种方式进行变换,即,插入、删除、更改,使两个字符串相似,
输出对应的最小变换次数。
输入样例:
hello
helle
输出
1
C++ 代码
#include <iostream>
#include <vector>
using namespace std;
int main(){
string str1, str2;
cin >> str1 >> str2;
vector<vector<int>> dp(str1.length()+1, vector<int>(str2.length()+1, 0));
for(int i = 0; i < str1.length()+1; i++)
dp[i][0] = i;
for(int i = 0; i < str2.length()+1; i++)
dp[0][i] = i;
for(int i = 1; i < str2.length()+1; i++){
for(int j = 1; j < str1.length()+1; j++){
if(str1[j-1] == str2[i-1]){
dp[j][i] = dp[j-1][i-1];
}else{
dp[j][i] = min(dp[j-1][i-1], min(dp[j-1][i], dp[j][i-1]))+1;
}
}
}
cout << dp[str1.length()][str2.length()] << endl;
return 0;
}