Popularity
0.5
Growing
Activity
0.0
Stable
0
3
0
Description
An implementation of the Levenshtein distance for Golang
Programming language: Go
License: MIT License
golang levenshtein alternatives and similar packages
Based on the "Data Structures" category.
Alternatively, view golang levenshtein alternatives based on common mentions on social networks and blogs.
-
golang-set
A simple, battle-tested and generic set type for the Go language. Trusted by Docker, 1Password, Ethereum and Hashicorp. -
hyperloglog
HyperLogLog with lots of sugar (Sparse, LogLog-Beta bias correction and TailCut space reduction) brought to you by Axiom -
ttlcache
An in-memory cache with item expiration and generics [Moved to: https://github.com/jellydator/ttlcache] -
Bloomfilter
Face-meltingly fast, thread-safe, marshalable, unionable, probability- and optimal-size-calculating Bloom filter in go -
hilbert
Go package for mapping values to and from space-filling curves, such as Hilbert and Peano curves. -
cuckoo-filter
Cuckoo Filter go implement, better than Bloom Filter, configurable and space optimized 布谷鸟过滤器的Go实现,优于布隆过滤器,可以定制化过滤器参数,并进行了空间优化 -
go-rquad
:pushpin: State of the art point location and neighbour finding algorithms for region quadtrees, in Go -
nan
Zero allocation Nullable structures in one library with handy conversion functions, marshallers and unmarshallers
WorkOS - The modern identity platform for B2B SaaS
The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.
Promo
workos.com
Do you think we are missing an alternative of golang levenshtein or a related project?
README
levenshtein
An implementation of the Levenshtein distance for Golang
Sources
Install
go get github.com/gitchander/levenshtein
Examples
package main
import (
"fmt"
lev "github.com/gitchander/levenshtein"
)
func main() {
var (
a = "exponential"
b = "polynomial"
)
distance := lev.Strings(a, b)
fmt.Printf("the levenshtein distance between %q and %q = %d\n", a, b, distance)
}
result:
the levenshtein distance between "exponential" and "polynomial" = 6
Example the distance by words:
package main
import (
"fmt"
"strings"
lev "github.com/gitchander/levenshtein"
)
func main() {
var (
line1 = "one two three four"
line2 = "one two three"
)
var (
a = strings.Split(line1, " ")
b = strings.Split(line2, " ")
)
distance := lev.Distance(lev.StringSlices{a, b})
fmt.Printf("the levenshtein distance between %q and %q = %d\n", a, b, distance)
}
result:
the levenshtein distance between ["one" "two" "three" "four"] and ["one" "two" "three"] = 1
Example with print matrix:
package main
import (
"fmt"
lev "github.com/gitchander/levenshtein"
)
func main() {
var (
a = []rune("sitting")
b = []rune("kitten")
)
costs := lev.DefaultCosts
fmt.Print(lev.PrintableMatrix(costs, a, b, ""))
}
result:
. . k i t t e n
. 0 1 2 3 4 5 6
s 1 1 2 3 4 5 6
i 2 2 1 2 3 4 5
t 3 3 2 1 2 3 4
t 4 4 3 2 1 2 3
i 5 5 4 3 2 2 3
n 6 6 5 4 3 3 2
g 7 7 6 5 4 4 3
Example the distance by interfaces:
package main
import (
"fmt"
lev "github.com/gitchander/levenshtein"
)
func main() {
var (
a = []Person{{"one", 1}, {"two", 2}, {"three", 3}, {"four", 4}}
b = []Person{{"one", 1}, {"two", 2}, {"three", 3}}
)
distance := lev.Distance(PersonSlices{a, b})
fmt.Printf("the levenshtein distance = %d\n", distance)
}
type Person struct {
Name string
Age int
}
type PersonSlices [2][]Person
var _ lev.Interface = PersonSlices{}
func (p PersonSlices) Len(k int) int {
return len(p[k])
}
func (p PersonSlices) Match(i, j int) bool {
return p[0][i] == p[1][j]
}
result:
the levenshtein distance = 1