给定任意两个字符串,用python写出一个算法计算它们的编辑距离
时间: 2023-06-09 15:07:46 浏览: 188
好的,我了解了。关于您的问题,我们可以使用动态规划来计算两个字符串的编辑距离。
具体步骤如下:
1. 创建一个二维数组dp,其中dp[i][j]表示字符串1前i个字符与字符串2前j个字符的编辑距离。
2. 初始化dp数组:
1) 当i=0,j=0时,dp[i][j]=0。
2) 当i=0时,dp[i][j]=j,因为如果字符串1为空,需要把字符串2的j个字符都删除。
3) 当j=0时,dp[i][j]=i,因为如果字符串2为空,需要把字符串1的i个字符都删除。
3. 根据以下公式计算dp数组:
if s1[i-1]==s2[j-1]:
dp[i][j] = dp[i-1][j-1]
else:
dp[i][j] = 1+min(dp[i][j-1], dp[i-1][j], dp[i-1][j-1])
其中,s1[i-1]为字符串1第i个字符,s2[j-1]为字符串2第j个字符。
4. 最终结果为dp[m][n],其中m和n为两个字符串的长度。
下面是完整的Python代码实现:
```python
def edit_distance(s1, s2):
m, n = len(s1), len(s2)
dp = [[0]*(n+1) for _ in range(m+1)]
for i in range(m+1):
dp[i][0] = i
for j in range(n+1):
dp[0][j] = j
for i in range(1, m+1):
for j in range(1, n+1):
if s1[i-1] == s2[j-1]:
dp[i][j] = dp[i-1][j-1]
else:
dp[i][j] = 1+min(dp[i][j-1], dp[i-1][j], dp[i-1][j-1])
return dp[m][n]
```
您可以尝试使用这个算法计算任意两个字符串的编辑距离。希望能对您有帮助!
阅读全文