Advertisement
RizkyMaulana

Levensthein Distance

Jun 20th, 2018
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.54 KB | None | 0 0
  1. /*
  2.     Created by : Rizki Maulana Akbar, On 04 - 2018 ;
  3. */
  4. import org.springframework.stereotype.Component;
  5.  
  6. @Component
  7. public class Levensthein {
  8.     public double getRates(String s1, String s2) {
  9.         int max = Math.max(s1.length(), s2.length());
  10.         return max == 0 ? 0.0D : distance(s1, s2) / (double)max;
  11.     }
  12.     public int distance(String s1, String s2) {
  13.         if (s1 == null) {
  14.             throw new NullPointerException("s1 must not be null");
  15.         } else if (s2 == null) {
  16.             throw new NullPointerException("s2 must not be null");
  17.         } else if (s1.equals(s2)) {
  18.             return 0;
  19.         } else if (s1.length() == 0) {
  20.             return s2.length();
  21.         } else if (s2.length() == 0) {
  22.             return s1.length();
  23.         } else {
  24.             int[] v0 = new int[s2.length() + 1];
  25.             int[] v1 = new int[s2.length() + 1];
  26.             int i;
  27.             for (i = 0; i < v0.length;  i++) {
  28.                 v0[i] = i ;
  29.             }
  30.             for (i = 0; i < s1.length(); ++i) {
  31.                 v1[0] = i + 1;
  32.                 for (int j = 0; j < s2.length(); ++j) {
  33.                     int cost = 1;
  34.                     if (s1.charAt(i) == s2.charAt(j)) {
  35.                         cost = 0;
  36.                      }
  37.                     v1[j + 1] = Math.min(v1[j] + 1, Math.min(v0[j + 1] + 1, v0[j] + cost));
  38.                 }
  39.                 int[] vtemp = v0;
  40.                 v0 = v1;
  41.                 v1 = vtemp;
  42.             }
  43.             return v0[s2.length()];
  44.         }
  45.     }
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement