Java String Distance editDistance(String s0, String s1)

Here you can find the source of editDistance(String s0, String s1)

Description

edit Distance

License

Apache License

Declaration

private static int editDistance(String s0, String s1) 

Method Source Code

//package com.java2s;
//License from project: Apache License 

public class Main {
    private static int editDistance(String s0, String s1) {
        int len0 = s0.length() + 1;
        int len1 = s1.length() + 1;

        // the array of distances                                                       
        int[] cost = new int[len0];
        int[] newcost = new int[len0];

        // initial cost of skipping prefix in String s0                                 
        for (int i = 0; i < len0; i++) {
            cost[i] = i;//from   ww  w  . j ava2 s .  c o m
        }

        // dynamically computing the array of distances                                  
        // transformation cost for each letter in s1                                    
        for (int j = 1; j < len1; j++) {
            // initial cost of skipping prefix in String s1                             
            newcost[0] = j;

            // transformation cost for each letter in s0                                
            for (int i = 1; i < len0; i++) {
                // matching current letters in both strings                             
                int match = (s0.charAt(i - 1) == s1.charAt(j - 1)) ? 0 : 1;

                // computing cost for each transformation                               
                int cost_replace = cost[i - 1] + match;
                int cost_insert = cost[i] + 1;
                int cost_delete = newcost[i - 1] + 1;

                // keep minimum cost                                                    
                newcost[i] = Math.min(Math.min(cost_insert, cost_delete), cost_replace);
            }

            // swap cost/newcost arrays                                                 
            int[] swap = cost;
            cost = newcost;
            newcost = swap;
        }

        // the distance is the cost for transforming all letters in both strings        
        return cost[len0 - 1];
    }
}

Related

  1. editDistance(CharSequence first, CharSequence second)
  2. editDistance(String one, String two)
  3. editDistance(String s, String t)
  4. editDistance(String s, String t)
  5. editDistance(String s, String t)
  6. EditDistance(String s1, String s2)
  7. editDistance(String str1, String str2)
  8. editDistance(String string1, String string2)
  9. editDistance(String word1, String word2)