☰
华为题:编辑距离
2026/10/15 4:37:40 网站建设 项目流程

给定两个字符串word1和word2,请返回将word1转换成word2所使用的最少操作数。

你可以对一个单词进行如下三种操作:

  • 插入一个字符

  • 删除一个字符

  • 替换一个字符

输入描述

第一行输入字符串word1。

第二行输入字符串word2。

输出描述

输出最少操作数。

示例 1

输入

text

horse ros

输出

text

3

说明

horse -> rorse(替换h为r)
rorse -> rose(删除r)
rose -> ros(删除e)
共 3 步。

C++ 解法

cpp

#include <bits/stdc++.h> using namespace std; int main() { string a, b; cin >> a >> b; int n = a.size(), m = b.size(); vector<vector<int>> dp(n + 1, vector<int>(m + 1, 0)); for (int i = 0; i <= n; i++) dp[i][0] = i; for (int j = 0; j <= m; j++) dp[0][j] = j; for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { if (a[i - 1] == b[j - 1]) { dp[i][j] = dp[i - 1][j - 1]; } else { dp[i][j] = 1 + min({dp[i - 1][j], dp[i][j - 1], dp[i - 1][j - 1]}); } } } cout << dp[n][m] << endl; return 0; }

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询