Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
38
Task/Levenshtein-distance/Go/levenshtein-distance-1.go
Normal file
38
Task/Levenshtein-distance/Go/levenshtein-distance-1.go
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
func main() {
|
||||
fmt.Println(ld("kitten", "sitting"))
|
||||
}
|
||||
|
||||
func ld(s, t string) int {
|
||||
d := make([][]int, len(s)+1)
|
||||
for i := range d {
|
||||
d[i] = make([]int, len(t)+1)
|
||||
}
|
||||
for i := range d {
|
||||
d[i][0] = i
|
||||
}
|
||||
for j := range d[0] {
|
||||
d[0][j] = j
|
||||
}
|
||||
for j := 1; j <= len(t); j++ {
|
||||
for i := 1; i <= len(s); i++ {
|
||||
if s[i-1] == t[j-1] {
|
||||
d[i][j] = d[i-1][j-1]
|
||||
} else {
|
||||
min := d[i-1][j]
|
||||
if d[i][j-1] < min {
|
||||
min = d[i][j-1]
|
||||
}
|
||||
if d[i-1][j-1] < min {
|
||||
min = d[i-1][j-1]
|
||||
}
|
||||
d[i][j] = min + 1
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
return d[len(s)][len(t)]
|
||||
}
|
||||
24
Task/Levenshtein-distance/Go/levenshtein-distance-2.go
Normal file
24
Task/Levenshtein-distance/Go/levenshtein-distance-2.go
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
func levenshtein(s, t string) int {
|
||||
if s == "" { return len(t) }
|
||||
if t == "" { return len(s) }
|
||||
if s[0] == t[0] {
|
||||
return levenshtein(s[1:], t[1:])
|
||||
}
|
||||
a := levenshtein(s[1:], t[1:])
|
||||
b := levenshtein(s, t[1:])
|
||||
c := levenshtein(s[1:], t)
|
||||
if a > b { a = b }
|
||||
if a > c { a = c }
|
||||
return a + 1
|
||||
}
|
||||
|
||||
func main() {
|
||||
s1 := "rosettacode"
|
||||
s2 := "raisethysword"
|
||||
fmt.Printf("distance between %s and %s: %d\n", s1, s2,
|
||||
levenshtein(s1, s2))
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue