รหัสเทียม ของ Damerau–Levenshtein_distance

เพิ่มการกระทำจาก Levenshtein edit distance เข้าไปอีกหนึ่งการกระทำ ดังนี้

if(i > 1 and j > 1 and str1[i] = str2[j-1] and str1[i-1] = str2[j]) then d[i, j] := minimum( d[i, j], d[i-2, j-2] + cost   // transposition )

จะได้รหัสเทียมที่สมบูรณ์เป็น

int LevenshteinDistance(char s[1..m], char t[1..n]){ // สำหรับทุกๆค่า i และ j, d[i,j] จะแสดงค่าความแตกต่างระหว่างอักขระ i ตัวแรกของ s และ อักขระ j ตัวแรกของ t สังเกตว่า แถวลำดับ d จะมีขนาด (m+1)x(n+1) declare int d[0..m, 0..n] for i from 0 to m   d[i, 0] := i // ค่าความแตกต่างระหว่างข้อความแรกใดๆ กับ ข้อความที่สองที่ว่างเปล่า  for j from 0 to n   d[0, j] := j // ค่าความแตกต่างระหว่างข้อความที่สองใดๆ กับ ข้อความแรกที่ว่างเปล่า  for j from 1 to n {   for i from 1 to m   {     if s[i] = t[j] then       d[i, j] := d[i-1, j-1]       // พิจารณาตัวถัดมา     else       d[i, j] := minimum                  (                    d[i-1, j] + 1,  // การตัดออก                    d[i, j-1] + 1,  // การแทรก                    d[i-1, j-1] + 1 // การแทนที่                  )      if(i > 1 and j > 1 and s[i] = t[j-1] and s[i-1] = t[j]) then       d[i, j] := minimum(       d[i, j],       d[i-2, j-2] + cost   // การสลับอักขระ       )   } } return d[m,n]}