Próbuję znaleźć liczbę znaków, które muszę usunąć, aby te same słowa były takie same. Na przykład "przy", "kot" będzie 1, ponieważ mogę usunąć c, "łódź" i "dostał" będzie 3, ponieważ mogę usunąć b, a ig, aby go ot. Umieściłem słowa w słowniku z ich liczbą jako wartością. Następnie przechodzę do słownika i sprawdzam, czy ten klucz istnieje w innym słowniku, inaczej dodaję 1 do różnicy. Czy jest to bardzo nieefektywny algorytm?Usunięcie odległości między słowami
Ale przecenia liczbę potrzebnych skreśleń.
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
Twój algorytm jest wyraźnie źle: 'deletiondistance ("Hello", "Hello, world")' '0' daje. – DyZ
To tylko jedno słowo. – justcurious
Ta sama różnica: 'deletiondistance (" Hello "," Helloworld ")' daje '0'. – DyZ