1225: 字符串的修改
来源:互联网 发布:语音模拟软件 编辑:程序博客网 时间:2024/06/03 20:51
链接在这儿!
这其实是一道经典的题目——Edit distance
很自然地我们会想到,变换两个字符串所需的操作次数与这两个字符串的匹配程度有关。
举个栗子 SNOWY & SUNNY
以下是几种可能的情况
S – N O W Y
S U N N – Y
操作数:3– S N O W – Y
S U N – – N Y
操作数:5“–”意味着一次插入或删除操作。
当它们匹配程度最高时,便会有最小的操作数产生,如果你枚举的话,可以发现,第一种修改情况的操作数是最少的,没有比这更少的操作数:插入
总而言之,两个字符串之间有很多种匹配方案,如果暴力搜索无疑是低效的。
在这里,我们引入一个全新的思考问题的视角:
我们把输入的两个字符串
想象一下,假设我们已经获得
此时当我们要匹配
1.删除
x[i]
x[i]
− 2.插入
y[j]
−
y[j] 3.
x[i]→y[j]
x[i]
y[j]
以下重点!
以第一种情况为例:删除
题目要求最少的操作数,那么我们最好的方案便是在每一步时都求得最少的操作数,按以上思路继续,便可获得整体最小的操作数。(由于以上式子
即
其中,当
如此,我们刚好可以用一个二维数组
伪代码可以这么写
其实这种方法叫做动态规划 Dynamic programming,dp是它的缩写,同学们可以自己去了解一下这种思想方法。
- 1225: 字符串的修改
- 【字符串的修改】
- 修改字符串的方法
- 1096: 字符串的修改
- 字符串的修改
- 修改配置文件的连接字符串
- 对字符串常量的修改
- HOJ 10411 字符串的修改
- 第十五周 字符串的修改
- 字符串的修改与替换
- Python修改字符串的大小写
- 修改字符串
- 字符串修改
- 修改字符串
- 修改字符串
- 字符串的修改(计算字符串的相似度)
- 字符串常量不可修改,数组可修改的原因
- 不能修改常量字符串的内容
- Java之I/O处理
- Scala基础之for循环,函数,Lazy关键字
- 基于Unity3D的相机功能的实现(七)—— 综合篇
- [POJ](2236)Wireless Network ---- 并查集
- Vim的升级与配置
- 1225: 字符串的修改
- Ubuntu 17.10 安装 cuda 9.0 之 deb
- transform 3D 变换
- PHP+MySQL+sphinx+scws实现全文检索
- MIME协议在邮件中的应用详解
- Android Studio导入外部源码(用Android Studio写的)
- PAT 1003.我要通过!
- Tomcat的安装和配置(Windows)
- 抢票系统的简单实现