Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 2nd, 2012  |  syntax: None  |  size: 0.65 KB  |  hits: 13  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. package LevenshteinDistance
  2.  
  3. import "fmt"
  4. import "math"
  5.  
  6. func compare(a, b string) int {
  7.         var cost int
  8.         d := make([][]int, len(a)+1)
  9.         for i := 0; i < len(d); i++ {
  10.                 d[i] = make([]int, len(b)+1)
  11.         }
  12.        
  13.         var min1, min2, min3 int
  14.  
  15.         for i := 0; i < len(d); i++ {
  16.                 d[i][0] = i
  17.         }
  18.  
  19.         for i := 0; i < len(d[0]); i++ {
  20.                 d[0][i] = i
  21.         }
  22.        
  23.         for i := 1; i < len(d); i++ {
  24.                 for j := 1; j < len(d[0]); j++ {
  25.                         if a[i-1] == b[j-1] {
  26.                                 cost = 0
  27.                         } else {
  28.                                 cost = 1
  29.                         }
  30.  
  31.                         min1 = d[i-1][j] + 1
  32.                         min2 = d[i][j-1] + 1
  33.                         min3 = d[i-1][j-1] + cost
  34.                         d[i][j] = int(math.Fmin(math.Fmin(float64(min1), float64(min2)), float64(min3)))
  35.                 }
  36.         }
  37.  
  38.         return d[len(a)][len(b)]
  39. }