| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> 面试题01.05. 一次编辑 -> 正文阅读 |
|
[C++知识库]面试题01.05. 一次编辑 |
?1. 思考先分析允许进行的操作: 1. 插入一个字符:当两个字符串长度只相差1的时候可能满足,稍短的字符串将某个字符往后的字符数组平移一位后,剩余字符与稍长的字符串一致。 2. 删除一个字符:两个字符串长度只相差1的时候可能满足,同时删除一个字符可以看作是插入一个字符的相反操作。即删除一个字符是指稍长字符串删除一个字符得到稍短字符串,也可以看作是稍短字符串插入一个字符得到稍长字符串。 3. 替换一个字符:两个字符串长度相同时可能满足,两个字符串只有唯一一个索引位的字符不一致。 在了解所有一次编辑操作场景的本质后,我们就可以根据两个字符串长度间的关系,分别判断是否满足对应场景条件,比如两个字符串first和second。 1. len(first) == len(second) ?判断first和second是否只有0个或者1个索引位的字符不相同。 2. len(first) + 1 == len(second) first字符串的长度比second少1,判断是否first添加一个字符就可以与second一致。 3. len(first) == len(second) + 1 first字符串的长度比second多1,判断是否second添加一个字符就可以与first一致。 4. 其他情况不可能仅一次编辑使first与second一致 其中场景1中判断first和second是否仅有不超过1个索引位的字符不相同很简单,遍历字符串,记录不相同的字符总数即可。 场景2和场景3中判断first是否插入一个字符就可以和second一致,观察上图可以发现,如果first与second存在首个索引位不一致后,当前first索引位字符直接与second的后一个索引位字符比较,如果后续字符都一致,说明满足first插入一个字符就与second一致的可能。 假定len(first) + 1 == len(second),实现代码如下:
?2. 代码实现根据上面分析思路,代码实现如下:
? ? ? ? |
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 4:00:57- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |