Skip to content

Instantly share code, notes, and snippets.

@glureau
Forked from ademar111190/levenshtein.kt
Created April 28, 2025 09:11
Show Gist options
  • Save glureau/f9acf3a49856f3dbae08b3bf79eebb21 to your computer and use it in GitHub Desktop.
Save glureau/f9acf3a49856f3dbae08b3bf79eebb21 to your computer and use it in GitHub Desktop.
Levenshtein Distance algorithm implementation using Kotlin
import kotlin.math.min
fun levenshtein(lhs : CharSequence, rhs : CharSequence) : Int {
if(lhs == rhs) { return 0 }
if(lhs.isEmpty()) { return rhs.length }
if(rhs.isEmpty()) { return lhs.length }
val lhsLength = lhs.length + 1
val rhsLength = rhs.length + 1
var cost = Array(lhsLength) { it }
var newCost = Array(lhsLength) { 0 }
for (i in 1..rhsLength-1) {
newCost[0] = i
for (j in 1..lhsLength-1) {
val match = if(lhs[j - 1] == rhs[i - 1]) 0 else 1
val costReplace = cost[j - 1] + match
val costInsert = cost[j] + 1
val costDelete = newCost[j - 1] + 1
newCost[j] = min(min(costInsert, costDelete), costReplace)
}
val swap = cost
cost = newCost
newCost = swap
}
return cost[lhsLength - 1]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment