Skip to content

Commit 60b4ca4

Browse files
committed
edit distance
1 parent 95ea915 commit 60b4ca4

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package main.java.videos;
2+
3+
import java.util.stream.Stream;
4+
5+
public class EditDistance {
6+
public static int findEditDistance(final String a,
7+
final String b,
8+
final int cD,
9+
final int cA,
10+
final int cT) {
11+
final int f[][] = new int[a.length() + 1][b.length() + 1];
12+
for (int i = 1; i <= a.length(); i++) {
13+
f[i][0] = cD * i;
14+
}
15+
for (int j = 1; j <= b.length(); j++) {
16+
f[0][j] = cA * j;
17+
}
18+
for (int i = 1; i <= a.length(); i++) {
19+
for (int j = 1; j <= b.length(); j++) {
20+
final int transitionCost = a.charAt(i - 1) == b.charAt(j - 1) ? 0 : cT;
21+
f[i][j] = Stream.of(f[i - 1][j] + cD, f[i][j - 1] + cA, f[i - 1][j - 1] + transitionCost)
22+
.min(Integer::compareTo)
23+
.orElse(Integer.MAX_VALUE);
24+
}
25+
}
26+
return f[a.length()][b.length()];
27+
}
28+
}
29+
30+
class EditDistanceMain {
31+
public static void main(String[] args) {
32+
System.out.println("Edit Distance: " + EditDistance.findEditDistance("pqqrst", "qqttps", 1, 1, 1));
33+
}
34+
}

0 commit comments

Comments
 (0)