python 编辑距离_最短编辑距离

博客探讨了在Python3中实现编辑距离算法时遇到的超时问题。代码在本地平均运行时间为240毫秒,但无法通过限制为1秒的在线测试。文章提供了算法实现并进行了多次生成随机字符串的测试。问题在于如何优化算法以满足时间限制。
摘要由CSDN通过智能技术生成

我靠,python3通过不了.............老是说超时。。。。。。。本地测平均时间为240毫秒左右...........求解决(题目显示最多不能超过1秒) ef minDistance_dp(word1, word2):

"""

word1: 原始字符串

word2: 目标字符串

"""

N1, N2 = len(word1), len(word2)

if(N1 == 0) or (N2 == 0):

if N1 > N2:

return N1

else:

return N2

if (N1 < N2):

return minDistance_dp(word2, word1)

k = N2 + 1

res = [i  for i in range(k)]

for i in range(N1):

old = res[0]

res[0] = i + 1

for j in range(1, k):

tmp = res[j]

jk = j - 1

if word1[i] == word2[jk]:

res[j] = old

else:

if tmp < old:

if tmp < res[jk]:

res[j] = tmp + 1

else:

res[j] = res[jk] + 1

else:

if old < res[jk]:

res[j] = old + 1

else:

res[j] = res[jk] + 1

old = tmp

return res[N2]

def genetare_word(m,n):

"""

n 表示字符的长度

"""

word1 = [chr(randint(65,90)) for _ in range(m)]

word2 = [chr(randint(65, 90)) for _ in range(n)]

return (word1,word2)

# while True:

#     try:

#         word1, word2 = raw_input().split()

#         print(minDistance_dp(word1, word2))

#     except:

#         break

if __name__ == '__main__':

for _ in range(500):

m = randint(1, 1024)

n = randint(1, 1024)

word1,word2 = genetare_word(1024,1024)

result = minDistance_dp(word1,word2)

if result == None:

print("算法不正确")

# profile.run("minDistance_dp(word1, word2)")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值