首页 > 试题广场 >

计算字符串的编辑距离

[编程题]计算字符串的编辑距离
  • 热度指数:144967 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解

Levenshtein 距离,又称编辑距离,指的是两个字符串之间,由一个转换成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。编辑距离的算法是首先由俄国科学家 Levenshtein 提出的,故又叫 Levenshtein Distance 。

例如:

字符串A: abcdefg

字符串B: abcdef

通过增加或是删掉字符 ”g” 的方式达到目的。这两种方案都需要一次操作。把这个操作所需要的次数定义为两个字符串的距离。

要求:

给定任意两个字符串,写出一个算法计算它们的编辑距离。

数据范围:给定的字符串长度满足




输入描述:

每组用例一共2行,为输入的两个字符串



输出描述:

每组用例输出一行,代表字符串的距离

示例1

输入

abcdefg
abcdef

输出

1
头像 南江边
发表于 2022-04-25 12:49:27
''' 首先构建dp图,以下图为例: 行数为len(oppa)+1,列数为len(apple)+1,加1是因为要考虑 空字符串 第0行中每列值含义:(绿色格子表格) 以第0行第2列为例,表示由 空字符串 变成 'ap' 需要的编辑次数,显然在空字符串中执行两次添加操作即可,所以填2 展开全文
头像 迪士尼在逃米老鼠
发表于 2020-02-23 17:49:48
这题考的是levenshtein距离的计算,需要运用动态规划去解决该类问题。 传递公式: lev[i][j]用来表示字符串a的[1...i]和字符串b[1...j]的levenshtein距离; 插入和删除操作互为逆过程:a删除指定字符变b等同于b插入指定字符变a; 如果a[i] == b[ 展开全文
头像 代码界的小白
发表于 2021-12-07 22:47:58
题目主要信息 1、给出若干组字符串,每一组包括两个 2、每个字符串可以通过替换、增添、删除来进行修改,每次修改需要1次编辑距离 3、求最小编辑距离使得两个字符串相等 方法一:字符串比较 具体方法 编辑距离是一类非常经典的动态规划的题目。 我们使用dp[i][j]表示字符串A的前i个字符与字符串B的前 展开全文
头像 Lucien1599
发表于 2021-06-08 17:53:32
Java版本,看到字符串修改代价第一时间想到动态规划A[0,...i-1]最后修改为B[0,...j-1],有以下两种情况:(一)A[i-1] == B[j-1]时,最后一个元素不用动,只用考虑A[0,...i-2]编辑为B[0,...j-2]需要的代价,dp[i][j] = dp[i-1][j-1 展开全文
头像 牛客940206908号
发表于 2021-10-07 11:32:45
#动态规划经典题目 #nowcoder不能导入numpy模块,只能手工创建二维数组 #重点注意二维数据的创建方法,重点注意其横竖坐标,注意注意 #dp = [[1 for i in range(n+1)] for j in range(m+1)],横坐标是 n, 竖坐标是m while True: 展开全文
头像 For.dream
发表于 2021-06-19 14:30:13
题目 leetCode72:编辑距离 编辑距离算法是一个非常实用的算法,它的作用是求出把一个字符串s1变为另一个字符串s2所需要的最少的操作数。此过程中,只能对字符串进行插入、删除或替换(其实还有一种隐形操作,就是略过) 比如把rad变为apple,就需要经过5步 解题思路 (1)基本过程 对于 展开全文
头像 呆喵挠琴
发表于 2021-11-04 17:57:12
题目的主要信息: 编辑距离,指的是两个字符串之间,由一个转换成另一个所需的最少编辑操作次数。 编辑操作有:将一个字符替换成另一个字符,插入一个字符,删除一个字符。 要求:给定任意两个字符串,写出一个算法计算它们的编辑距离。 方法一:动态规划 用动态规划,dp[i][j] 表示str1的前i个字符 展开全文
头像 小陆要懂云
发表于 2021-08-20 09:18:47
D[i][j] 表示 A 的前 i 个字母和 B 的前 j 个字母之间的编辑距离。 本质不同的操作实际上只有三种: 在单词 A 中插入一个字符; 在单词 B 中插入一个字符; 修改单词 A 的一个字符。 特别地,如果 A 的第 i 个字符和 B 的第 j 个字符原本就相同,那么我们实际上不需要进行 展开全文
头像 牛客840927103号
发表于 2021-03-04 19:32:26
python版本的,采用动态规划 while True:     try:         str1=input()         str2=input()     &n 展开全文
头像 牛客912492032号
发表于 2021-04-06 23:23:16
使用动态规划计算,具体内容参见博客:https://www.jianshu.com/p/9a53f32cf62b def editDistance(str1, str2): ''' 计算字符串str1和str2的编辑距离 ''' edit = [[i+j for j 展开全文