题解 | #计算字符串的编辑距离#
计算字符串的编辑距离
https://www.nowcoder.com/practice/3959837097c7413a961a135d7104c314
#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
int main() {
string str1, str2;
cin >> str1 >> str2;
int ans = 0;
if(str1.length() == 0 || str2.length() == 0) ans = ans + str1.length() + str2.length();
else{
vector<vector<int>> dp(str1.length()+1, vector<int>(str2.length()+1, 0));
for(int i = 1; i <= str1.length(); i++) dp[i][0] = i;
for(int j = 1; j <= str2.length(); j++) dp[0][j] = j;
for(int i = 1; i <= str1.length(); i++){
for(int j = 1; j <= str2.length(); j++){
dp[i][j] = min(min(dp[i-1][j] + 1, dp[i][j-1] + 1), dp[i-1][j-1] + (str1[i-1] != str2[j-1]));
}
}
ans = dp[str1.length()][str2.length()];
}
cout << ans << endl;
return 0;
}
查看4道真题和解析