Python 中的编辑距离2024 年 8 月 29 日 | 4 分钟阅读 两个字符串之间的“编辑距离”是指将一个字符串转换为另一个字符串所需的最小操作次数(插入、删除和替换)。这个概念用于各种应用,例如拼写纠正、DNA序列比对等。 例如,“kitten”和“sitting”之间的编辑距离是3,因为需要3个操作才能将“kitten”转换为“sitting”(将“k”改为“s”,将“e”改为“i”,并在末尾添加“g”)。 在 Python 中,我们可以使用 Pylev 库 的 distance 模块来计算两个字符串之间的编辑距离。实现方法如下: 输出 The edit distance between 'kitten' and 'sitting' is: 3 或者,您可以使用动态规划方法自己实现编辑距离算法,实现方法如下: 示例 输出 This code returns the edit distance between str1 and str2 as 3. 动态规划实现可以描述如下: 编辑距离可以使用动态规划方法进行计算。这涉及到创建一个具有m+1 行和n+1 列的二维表 dp,其中m和n分别是两个字符串str1和str2的长度。之后,根据str1和str2中的字符是否匹配,使用一系列规则填充该表。最终结果是存储在dp[m][n]中的str1和str2之间的编辑距离。 动态规划方法的思想是使用二维表 dp来存储中间结果并避免重复计算。dp[i][j]字段存储字符串str1的前i个字符与字符串str2的前j个字符之间的编辑距离。 第一个for 循环使用将空字符串转换为str1或str2所需的 the number of operations 来初始化dp表的第一行和第一列。这与相应字符串的长度相同。 使用第二个 for 循环可以计算两个字符串str1和str2之间的编辑距离。如果两个字符串中的当前字符匹配,则相应的dp条目等于前一个dp条目(dp[i - 1][j - 1])。这意味着将str1转换为str2不需要任何操作。 如果字符不匹配,则相应的dp条目等于三个可能操作:删除、插入和替换的最小值。dp[i][j - 1]条目对应于删除,dp[i - 1][j]条目对应于插入,dp[i - 1][j - 1]条目对应于替换。公式1 + min(...)中的1代表当前操作的成本。for 循环结束后,dp[m][n]条目将包含最终结果,即转换str1到str2所需的最少操作次数。 Levenshtein 使用类似的方法确定两个字符串之间的编辑距离。来自Pylev 包的 distance 函数。不同之处在于pylev 库是用 C 实现的,这使得它比纯 Python 实现快得多。 考虑字符串“kitten”和“sitting”。动态规划表 dp 会如下所示: 每个dp[i][j]条目代表将kitten的前i个字符转换为sitting的前j个字符所需的最小操作次数。 例如,dp[2][2] = 2表示将kitten的前2个字符(ki)转换为sitting的前2个字符(si)需要2次操作。动态规划方法通过在每一步考虑每个可能的 the operation 来逐步填充dp表。 下一个主题如何在 Python 中连接字符串和整数 |
Kivy 是 Python 中一个独立于平台的图形用户界面工具。因为它兼容 Android、iOS、Linux 和 Windows。它通常用于 Android 应用程序的开发,但这并不妨碍它在桌面程序中的应用。屏幕管理器小部件:一个名为...的小部件
阅读 8 分钟
Python因其易用性和简洁性而被认为是最受欢迎的通用编程语言之一。此外,GraphQL,一种用于应用程序编程接口和服务器运行时的声明性查询语言,与Python配合得非常好。然而,只有很少的综合性...
阅读 8 分钟
文本消息可以使用摩尔斯电码方法进行通信,方法是输入一系列电脉冲,通常显示为短脉冲(称为“点”)和长脉冲(“破折号”)。塞缪尔·F·B·摩尔斯在 19 世纪 40 年代创建了该代码,用于...
阅读 16 分钟
当我们获得大量数据集时,将数据表快速分成相等的机会然后单独处理每个数据帧将非常有益。这只有在数据帧上的操作是...
5 分钟阅读
在本教程中,我们将讨论提供一种简单直观的方法来转换图像并理解其背后数据的 Python 库。今天的世界充斥着数据,而图像是这些数据的主要部分。但是为了被利用……
5 分钟阅读
Python2.x Python 2.x 是流行编程语言 Python 的一个版本。它于 2000 年首次发布,尽管更新版本 Python 3.x 于 2008 年发布,但至今仍被广泛使用。Python 2.x 的简单性和可用性是其两个主要特点。
阅读 3 分钟
在本教程中,我们将编写一个 Python 程序来查找两个给定字符串之间的差异。这个问题可能会在面试中出现。让我们理解问题陈述,然后我们将着手解决。问题陈述 - 给定两个字符串 s……
阅读 3 分钟
在本教程中,我们将编写 Python 程序来查找给定列表中所有和为零的三元组。我们将使用各种方法来解决这个问题。首先,让我们理解问题陈述。问题陈述 - 给定一个不重复元素的列表;我们……
7 分钟阅读
问题是给定一个整数数组,我们需要找到数组中的第 k 个最小元素,其中 k 是一个小于或等于数组长度的正整数。让我们看下面的示例。示例 - 输入:arr = [7, 4, 6, 3,...
5 分钟阅读
构建一个组织目录中文件的 Python 程序的通用过程如下: 1. 识别目录 - 您必须找到要组织的源目录。请务必注意该目录中包含的文件。这些文件可以是...
7 分钟阅读
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India