面试题之九章算法 字符串编辑距离

九章算法——面试题思路 面试题1 落单的数 题目描述: 有2n+1个数,其中2n个数两两成对,1个数落单,找出这个数。要求O(n)的时间复杂度,O(1)的空间复杂度。进阶问题:如果有2n+2个数,其中有2个数落单,该怎么办? 答: 初阶:将2n+1个数异或起来,相同的数会抵消,异或的答案就是要找的数。 进阶:假设两个不同的数是a和b,并且a!=b,将2n+2个数异或起来就会得到c=a 阅读详情

字符串编辑距离

  • 真言

学如逆水行舟,不进则退

  • 引言

这是我第二次做九章算法的题目,是第一次写他题目的代码。他的题目很好,很新颖,与时俱进。

  • 题目

有两个字符串A和B,对A可以进行如下的操作:
插入一个字符,删除一个字符,替换一个字符。
问A可以通过最少多少次操作变为B?
我们定义这个结果为字符串的最小编辑距离。

  • 思路(借鉴九章算法的,感觉挺好,所以实现,共同学习)

字符串编辑距离归为DP题目,所以还是超好的

  • 实验

  • 代码

test.cpp
#include<iostream>
#include<string>
using namespace std;

// get the minest number of three numbers
int min(int a,int b,int c);

// get the minest distance of string a and b
int zifuchuan_bianji_juli(string a,string b);


int main()
{
	string a,b;
	cout<<"please input string a and b"<<endl;
	cin>>a>>b;
	cout<<"a=\""<<a<<"\",b=\""<<b<<"\""<<endl;
	cout<<"字符串距离为: "<<zifuchuan_bianji_juli(a,b)<<endl;
	system("pause");
	return 0;
}

int zifuchuan_bianji_juli(string a,string b)
{
	if( a.empty() )
		return int( b.size() );
	else if( b.empty())
		return int( a.size() ) ;

	int ** dp = new int*[ b.size()+1 ];
	for(int i = 0;i<int(b.size()+1);i++)
		dp[i] = new int[a.size()+1]; 
	for(int i = 0; i<int(a.size()+1);i++)
		dp[0][i] = i;
	for(int i = 1; i<int(b.size()+1);i++)
		dp[i][0] = i;
	for(int i = 1; i<int(b.size()+1);i++)
		for(int j=1; j<int(a.size()+1);j++)
			if( a[j-1] != b[i-1] )
				dp[i][j] = min (dp[i-1][j],dp[i][j-1],dp[i-1][j-1])+1;
			else 
				dp[i][j] = min (dp[i-1][j]+1,dp[i][j-1]+1,dp[i-1][j-1]);
	return dp[b.size()][a.size()];
}

int min(int a,int b,int c)
{
	if(a>b)
	{
		if(b>c)
			return c;
		else return b;
	}else if(a>c)
		return c;
	else return a;
}


编辑距离问题 对于给定的字符串A和字符串B,编程计算其编辑距离d(A,B)。 设A 和B 是2 个字符串。要用最少的字符操作将字符串A 转换为字符串B。这里所说的字符操作包括 (1)删除一个字符; (2)插入一个字符; (3)将一个字符改为另一个字符。 将字符串A变换为字符串B 所用的最少字符操作数称为字符串A到B 的编辑距离,记为d(A,B)。试设计一个有效算法,对任给的2 个字符串A和B,计算出它们的编辑距离d(A,B)。 编程任务: 对于给定的字符串A和字符串B,编程计算其编辑距离d(A,B)。 立即下载

相关推荐

第36次全国计算机二级C语言上机试题及答案详解

第36次全国计算机二级C语言上机试题及答案详解

完美解决 ubuntu 配置环境变量后不能登录

今天,在我的电脑上装上了JDK ,配置好环境变量后。发现,登录的时候,不能登录(即在登录不到几秒的时间后又重新的回到了登录界面!)搞得我很郁闷!查找错误后才发现,原来,ubuntu 再启动的时候读取配置文件,并设置环境变量的顺序是这样的:1、在登录时,操作系统定制用户环境时使用的第一个文件就是  /etc/profile  ,此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行。2、在登录时操作系统使用的第二个文件是  /etc/environment  ,系统在读取你自己的profile 

蓝蓝的天 2万+

亿佰特E77模块(STM32WLE5CCU6)LoRa通信实战指南:从配置到应用开发

本文详细介绍了亿佰特E77模块(STM32WLE5CCU6)的LoRa通信实战指南,从硬件配置到应用开发。基于ARM Cortex-M4内核的E77模块集成了LoRa射频前端,具备超低功耗和硬件级抗干扰特性,适用于智能农业、工业现场等场景。文章提供了开发环境搭建、LoRa参数配置、实战通信及性能优化等实用技巧,帮助开发者快速掌握LoRa通信技术。

weixin_29164185的博客 761

内部错误,试图在初始化前展开展开app常量 【第四次修正】

一般出现这个问题居多在子游戏,原因是,找不到主程序的安装路径。 首先看主程序安装包里路径。 一、主程序脚本: [Registry] Root: HKCU; Subkey: "Software\WHQPGame\GamePlaza"; Flags: uninsdeletekey Root: HKCU; Subkey: "Software\WHQPGame\GamePlaza

1万+

OpenClaw 聪明设置指南(真实可用方案)

本文介绍了OpenClaw AI系统的配置与优化指南,主要内容包括:1)基础配置,涵盖初始化流程、安全设置和配置文件位置;2)模型分层策略,推荐主力模型与降级方案;3)性能优化,包括推理加速和内存管理;4)智能提升方法,如人格定义和技能安装;5)高级功能如多Agent协同和Token优化。文章提供了详细的配置命令和参数说明,帮助用户根据需求平衡性能与成本,实现高效AI助手部署。

qq_43344878的博客 709

【遥感数字图像处理(朱文泉)】各章博文链接汇总及思维导图

遥感数字图像处理(北京师范大学朱文泉教授)课程各章博文笔记汇总,及各章节思维导图

甜子yu的博客 2623

dfs算法的使用

算法思想,dfs算法是一个递归的过程,有回退的过程,对于一个无向连通图,访问图中某个顶点v0后,然后访问它的某一个邻接顶点v1,然后再从v1出发,访问v1的违访问过的邻接顶点,如此下去,直至到达所有的领接顶点都被访问过。然后回退一步,回到前一次被访问的顶点,看是否还有没有访问的顶点,如果有,则从这个顶点出发,进行向上述的过程一样进行访问,如果没有,则再回退一步,进行类似的访问,直至所有的顶点都被访...

Tongqi 2443

一张图看懂中国民航适航审定体系:从适航司到审定中心,到底谁管谁?

本文深入解析中国民航适航审定体系,从立法层到执行层的完整链条,揭示适航管理的金字塔结构和核心流程。涵盖适航司、审定中心等关键机构职能,以及型号审定、生产许可审定等全生命周期管理,展现中国适航体系的特色实践与创新探索。

weixin_30896511的博客 476

华硕 TUF GAMING b360m 启动设备中看不到启动项 已解决

华硕 TUF GAMING b360m 启动设备中看不到启动项 已解决 不能识别 M.2 接口固态硬盘

1万+

AI开发提效10倍:从需求到部署的全流程实战指南(附Prompt模板)

用AI开发不是“偷懒”,而是把时间花在更有价值的地方——原来花80%时间写重复代码,现在用AI搞定后,能把精力放在“优化用户体验”“提升系统性能”这些核心工作上,这才是AI给开发者的真正红利。如果你还没开始用AI做开发,建议从“写一个简单接口”“补一段注释”开始尝试,先用起来再优化方法。记住:AI是工具,不是对手,学会驾驭它,你会发现开发效率提升的同时,还能告别无效加班。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1531

从零开始理解Linux中断架构(1)-前言

前段时间在转行手撸WIFI路由器,搞wifi路由器需要理解网络驱动程序,以太网卡驱动程序,无线WIFI驱动程序,而网卡驱动的关键路径就在中断程序中,需要了解NIC设备驱动程序如何收发数据,为了彻底的知道数据包是如何二层传递上来的,又需要了解一点Linux中断系统。第一次看到这张表是无感的,大概能够看懂的就是那个中断次数,因为不停的cat,这个数值会一直不停的增加。第一列是逻辑中断号,第二三列是中断次数,第四列是中断控制器的名字,第五列是硬件中断号,第六列 中断类型,第七列是 中断源关联设备。

maxleng的专栏 881

【C-IASI 】中保研碰撞测试汇总(2022年12月)

中保研碰撞测试成绩汇总 图片来自网站:zhongbaoyan.gitee.io

Just do IT. 24万+

OpenClaw 源代码深度分析报告 &如何把企业自有的MCP server 工具集成到OpenClaw里? 怎样通过OpenAI 风格SDK 解析出来OpenClaw的全部的流式输出内容?

项目属性详情名称OpenClaw版本2026.3.2许可证MIT语言最低运行时包管理器pnpm主要仓库},// 注册工具// 工具实现},});// 注册命令" }),});},方面评价模块化设计⭐⭐⭐⭐⭐ 插件架构清晰,扩展性强协议设计⭐⭐⭐⭐⭐ WebSocket 协议完善,支持多种客户端多渠道支持⭐⭐⭐⭐⭐ 20+ 消息通道,覆盖主流平台安全机制⭐⭐⭐⭐ 配对认证、设备签名、权限控制完善本地优先⭐⭐⭐⭐⭐ 数据本地存储,用户完全控制项目属性详情名称OpenClaw版本。

AI天才研究院 938

九章算法面试题15 字符串编辑距离

有两个字符串A和B,对A可以进行如下的操作:插入一个字符,删除一个字符,替换一个字符。问A可以通过最少多少次操作变为B?我们定义这个结果为字符串的最小编辑距离。

九章算法的博客 1140

国科大学习资料--矩阵论(叶世伟)-期末考试题整理3

国科大学习资料–矩阵论-期末考试题整理3 国科大学习资料–矩阵论-期末考试题整理3 国科大学习资料–矩阵论-期末考试题整理3

无名何许人的博客 1404

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

九章算法 | Google 面试题:编辑距离

给出两个单词word1和word2,计算出将word1 转换为word2的最少操作次数。你总共三种操作方法:插入一个字符删除一个字符替换一个字符在线评测地址:LintCode 领扣样例 1:输入: "horse" "ros" 输出: 3 解释: horse -> rorse (替换 'h' 为 'r') rorse -> rose (删除 'r') rose -> ros (...

九章算法的博客 174

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

九章算法面试题36 交错的字符串

给定三个字符串A, B, C,判断C是否由A和B交错构成。交错构成的意思是,对于字符串C,可以将其每个字符标记为A类或B类,使得我A类的每个字符顺序构成了A字符串,B类的每个字符顺序构成了B字符串。如:对于A=”rabbit” B=”mq”, ”rabmbitq”是由A和B交错构成的,但”rabbqbitm”不是由A和B交错构成。

九章算法的博客 1294

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

九章算法高频算法题 & 题解

专栏 | 九章算法网址 | http://www.jiuzhang.com Google 面试题: Google 面试题 | 目标和 Google 面试题 | 建邮局 Google 面试题 | 0与1的问题 G...

九章算法的博客 1548

面试题 01.05. 一次编辑

【代码】面试题 01.05. 一次编辑。

INGNIGHT的专栏 124

算法笔记_面试题_18.动态规划_模板及示例十几道(上)

目录 1. 引例 例1.数字三角形最小路径和 代码1_ traverse法 代码2_ 分治法DC 代码3_动态规划DP_记忆化搜索(分治法DC + 记忆化) 代码4_动态规划DP_多重循环(本文重点,重点记忆) 动态规划方法对比:记忆化搜索 对比 多重循环 2. 动态规划的套路 2.1 动态规划的四点要素 2.2什么情况下使用动态规划? 2.3什么情况下不使用动态规划? 2.4面试中常见的动态规划类型 参考:九章算法 lintocde leetcode 代码随想录carl ...

惊鸿一博 1019

2017校招常考算法题归纳&典型题目汇总

专栏 | 九章算法 网址 | http://www.jiuzhang.com 2017校招即将来临,我们为大家整理了2017校招的常考算法类型,以及对应的典型题目。 另附参考答案地址:LINTCODE / LEETCODE 参考答案查询 数学 尾部的零 斐波纳契...

九章算法的博客 841

互联网公司最常见的面试算法题盘点!建议收藏!

要面试,免费试听《如何在一个月内攻破算法面试》,先理清思路能帮你节省65%**准备时间。 从程序员面试角度来说,经典的问题包括以下内容: 算法部分 二分搜索 Binary Search 分治 Divide Conquer 宽度优先搜索 Breadth First Search 深度优先搜索 Depth First Search 回溯法 Backtracking 双指针 Two Pointers 动态规划 Dynamic Programming 扫描线 Scan-line algorithm 快排

九章算法的博客 537

算法到底应该怎么学?

作者:九章算法 链接:https://www.zhihu.com/question/25693637/answer/747872819 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 学习算法,切记不要一上来就开始啃《算法导论》,毕竟这本书并不适合新手学习,如果你之前的算法基础比较薄弱,只会一直陷在“拿起来又放下”的循环里。可以怎么入门呢?建议还是看书+实战,实战当然也不是说要去肝ACM或者是topcoder什么的,基本上来我们LintCode刷刷题也就够了。如何学习算法?

好想去看海 2408

Android最佳性能实践(二)——分析内存的使用情况

由于Android是为移动设备开发的操作系统,我们在开发应用程序的时候应当始终把内存问题充分考虑在内。虽然Android系统拥有垃圾自动回收机制,但这并不意味着我们就可以完全忽略何时去分配或释放内存。即使我们全部按照上一篇文章中给出的编程建议来去编写程序,还是会很有可能出现内存泄露或其它类型的内存问题。所以,唯一能够解决问题的办法,就是尝试去分析应用程序的内存使用情况,那么本篇文章就会教大家如何进行分析。虽说现在的手机内存都已经非常大了,但是我们大家都知道,系统是不可能将所有的内存都分配给我们的应用程序的。

郭霖的专栏 9万+

处理器CPU概念及CPU多线程

1 socket, core, thread (1)socket就是主板上插cpu的槽的数目,也即管理员说的”路“     芯片厂商会把一个或多个Core封装在一个chip上,称作Socket(插槽)。假设一个插槽有两个Core,主板上插2个插槽,就是4核系统。 (2)core就是我们平时说的”核“,即双核,4核等。单核(single-core)和多核(multi-core)也称作u

翟海飞 1万+

Android分享之“始终”和“仅此一次”

几乎所有的App都有分享功能,除了使用第三方的分享SDK之外,我们还可以使用隐式Intent的分享方式,自动弹出一个包含系统中支持分享功能App的分享界面,用户可以选择一个希望使用的分享方式来进行分享,如下图:

Battling against our own ignorance 6620
上一篇: 面试题之自创 大数相除
下一篇: 面试题之编程之美 黑白球
p11323
博客等级 码龄14年 79粉丝 197原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值