Not logged in.  Login/Logout/Register | List snippets | | Create snippet | Upload image | Upload data

25
LINES

< > BotCompany Repo | #1026033 // levenWithSwapsSubstringIC - find damerau-Levenshtein-closest substring in larger string. complexity O(m*n)

JavaX fragment (include) [tags: use-pretranspiled]

Libraryless. Click here for Pure Java version (218L/2K).

static int levenWithSwapsSubstringIC(S haystack, S needle) {
  int m = strL(needle), n = strL(haystack);

  // base cases
  if (containsIgnoreCase(haystack, needle)) ret 0;

  int[] vx = new int[n+1], v0 = new int[n+1], v1 = new int[n+1];
  for i to m: { // iterate over needle
    v1[0] = i+1;
    for j to n: { // iterate over haystack
      int cost = neqic(needle.charAt(i), haystack.charAt(j)) ? 1 : 0;
      int d = min3(v1[j]+1,       // insertion
                       v0[j+1]+1,   // deletion
                       v0[j]+cost); // substitution
      if (i > 0 && j > 0 && equalsIgnoreCase(needle.charAt(i), haystack.charAt(j-1)) && equalsIgnoreCase(needle.charAt(i-1), haystack.charAt(j)))
        d = min(d, vx[j-1] + 1); // transposition
      v1[j+1] = d;
    }
    int[] temp = vx;
    vx = v0;
    v0 = v1;
    v1 = temp;
  }
  ret minOfIntArray(v0);
}

Author comment

Began life as a copy of #1023862

download  show line numbers  debug dex  old transpilations   

Travelled to 6 computer(s): bhatertpkbcr, mqqgnosmbjvj, pyentgdyhuwx, pzhvpgtvlbxg, tvejysmllsmz, vouqrxazstgt

No comments. add comment

Snippet ID: #1026033
Snippet name: levenWithSwapsSubstringIC - find damerau-Levenshtein-closest substring in larger string. complexity O(m*n)
Eternal ID of this version: #1026033/3
Text MD5: c16bea816de0b9c3051e066e51499887
Transpilation MD5: c8dc8feaefd0e3e167e916754e00b017
Author: stefan
Category: javax / a.i.
Type: JavaX fragment (include)
Public (visible to everyone): Yes
Archived (hidden from active list): No
Created/modified: 2019-11-11 15:05:26
Source code size: 892 bytes / 25 lines
Pitched / IR pitched: No / No
Views / Downloads: 225 / 313
Version history: 2 change(s)
Referenced in: [show references]