博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Edit Distance 字符串距离(重重)
阅读量:4106 次
发布时间:2019-05-25

本文共 1605 字,大约阅读时间需要 5 分钟。

题目:

解答:

编程之美上有解答,如果采用递归的方法,会超时。

解答一,采用递归,代码:

class Solution {  public:	  int minDistance(string word1, string word2) {		  return calculate(word1, word2);	  }	  int calculate(string word1, string word2)	  {		  if (word1 == "")		  {			  if (word2 == "")				  return 0;			  else				  return word2.length();		  }		  if (word2 == "")		  {			  if (word1 == "")				  return 0;			  else				  return word1.length();		  }		  if (word1[0] == word2[0])		  {			  string w1 = word1.substr(1, word1.length() - 1);			  string w2 = word2.substr(1, word2.length() - 1);			  return calculate(w1, w2);		  }		  else		  {			  string w1 = word1.substr(1, word1.length() - 1);			  string w2 = word2.substr(1, word2.length() - 1);			  int t1 = calculate(w1, word2);			  int t2 = calculate(word1, w2);			  int t3 = calculate(w1, w2);			  int minval = min(t1, t2);			  minval = min(t3, minval);			  return minval + 1;		  }	  }  };
解答二:

动态规划,http://www.cnblogs.com/lihaozy/archive/2012/12/31/2840152.html。

代码:

class Solution {  public:	  int minDistance(string word1, string word2) {		  int row = word1.length() + 1;		  int col = word2.length() + 1;		  vector
> f(row, vector
(col)); for (int i = 0; i < row; i++) f[i][0] = i; for (int i = 0; i < col; i++) f[0][i] = i; for (int i = 1; i < row; i++) { for (int j = 1; j < col; j++) { if (word1[i-1] == word2[j-1]) f[i][j] = f[i - 1][j - 1]; else { f[i][j] = f[i - 1][j - 1] + 1; f[i][j] = min(f[i][j], min(f[i - 1][j] + 1, f[i][j - 1] + 1)); } } } return f[row - 1][col - 1]; } };

你可能感兴趣的文章
openstack虚拟机创建流程
查看>>
Android中AsyncTask的简单用法
查看>>
Jenkins 启动命令
查看>>
剑指offer算法题分析与整理(三)
查看>>
JVM并发机制探讨—内存模型、内存可见性和指令重排序
查看>>
带WiringPi库的交叉笔译如何处理二之软链接概念
查看>>
Java8 HashMap集合解析
查看>>
自定义 select 下拉框 多选插件
查看>>
fastcgi_param 详解
查看>>
poj 1976 A Mini Locomotive (dp 二维01背包)
查看>>
MODULE_DEVICE_TABLE的理解
查看>>
db db2_monitorTool IBM Rational Performace Tester
查看>>
postgresql监控工具pgstatspack的安装及使用
查看>>
【JAVA数据结构】双向链表
查看>>
【JAVA数据结构】先进先出队列
查看>>
乘法逆元
查看>>
Objective-C 基础入门(一)
查看>>
Flutter Boost的router管理
查看>>
iOS开发支付集成之微信支付
查看>>
C++模板
查看>>