我靠,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)")