A-M baby
This commit is contained in:
parent
764da6cbbb
commit
db842d013d
19005 changed files with 197040 additions and 7 deletions
18
Task/Levenshtein-distance/Python/levenshtein-distance-1.py
Normal file
18
Task/Levenshtein-distance/Python/levenshtein-distance-1.py
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
def levenshteinDistance(s1,s2):
|
||||
if len(s1) > len(s2):
|
||||
s1,s2 = s2,s1
|
||||
distances = range(len(s1) + 1)
|
||||
for index2,char2 in enumerate(s2):
|
||||
newDistances = [index2+1]
|
||||
for index1,char1 in enumerate(s1):
|
||||
if char1 == char2:
|
||||
newDistances.append(distances[index1])
|
||||
else:
|
||||
newDistances.append(1 + min((distances[index1],
|
||||
distances[index1+1],
|
||||
newDistances[-1])))
|
||||
distances = newDistances
|
||||
return distances[-1]
|
||||
|
||||
print(levenshteinDistance("kitten","sitting"))
|
||||
print(levenshteinDistance("rosettacode","raisethysword"))
|
||||
13
Task/Levenshtein-distance/Python/levenshtein-distance-2.py
Normal file
13
Task/Levenshtein-distance/Python/levenshtein-distance-2.py
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
>>> from functools import lru_cache
|
||||
>>> @lru_cache(maxsize=4095)
|
||||
def ld(s, t):
|
||||
if not s: return len(t)
|
||||
if not t: return len(s)
|
||||
if s[0] == t[0]: return ld(s[1:], t[1:])
|
||||
l1 = ld(s, t[1:])
|
||||
l2 = ld(s[1:], t)
|
||||
l3 = ld(s[1:], t[1:])
|
||||
return 1 + min(l1, l2, l3)
|
||||
|
||||
>>> print( ld("kitten","sitting"),ld("rosettacode","raisethysword") )
|
||||
3 8
|
||||
Loading…
Add table
Add a link
Reference in a new issue