2つの単語を同じにするために削除する必要のある文字の数を調べようとしています。たとえば、 "at"、 "cat"は1になります。なぜなら私はc、 "boat"、 "got"を削除することができるから3、b、a、gを削除することができるからです。私はその単語の数を値として辞書に入れます。次に、辞書を繰り返して、そのキーが他の辞書に存在するかどうかを確認します。それ以外の場合は、その差に1を加えます。これは非常に非効率的なアルゴリズムですか?単語間の削除の距離
しかし、私が必要とする削除の数を過大評価しています。
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
あなたのアルゴリズムは明らかに間違っている: 'deletiondistance( "こんにちは"、 "こんにちは、世界は") '0''与えます。 – DyZ
これは1単語だけです。 – justcurious
同じ違い: 'deletiondistance(" Hello "、" Helloworld ")'は '0'を返します。 – DyZ