Tôi đang cố gắng tìm số ký tự cần xóa để làm cho hai từ giống nhau. Ví dụ "at", "cat" sẽ là 1 vì tôi có thể xóa c, "boat" và "got" sẽ là 3 vì tôi có thể xóa b, a và g để làm cho nó ot. Tôi đặt các từ vào một từ điển với số lượng của chúng như là giá trị. Sau đó, tôi lặp lại từ điển và xem liệu khóa đó có tồn tại trong từ điển khác hay không, nếu không tôi thêm 1 vào sự khác biệt. Đây có phải là một thuật toán rất kém hiệu quả không?khoảng cách xóa giữa các từ
Nhưng nó đang đánh giá quá cao số lần xóa mà tôi cần.
def deletiondistance(firstword, secondword):
dfw = {}
dsw = {}
diff = 0
for i in range(len(firstword)):
print firstword[i]
if firstword[i] in dfw:
dfw[firstword[i]]+=1
else:
dfw[firstword[i]]=1
for j in range(len(secondword)):
if secondword[j] in dsw:
dsw[secondword[j]] +=1
else:
dsw[secondword[j]]=1
for key, value in dfw.iteritems():
if key in dsw:
#print "key exists"
pass
else:
diff +=1
print "diff",diff
thuật toán của bạn rõ ràng là sai: 'deletiondistance ("Hello", "Hello, world")' cho '0'. – DyZ
Nó chỉ làm một từ. – justcurious
Sự khác biệt tương tự: 'deletiondistance (" Hello "," Helloworld ")' cho '0'. – DyZ