- public class LevenshteinEDRule implements EditDistanceRule {
-
- @Override
- public int getDistance(String s, String t) {
-
- char[] sChars = s.toCharArray();
- char[] tChars = t.toCharArray();
- int[][] matrix = new int[sChars.length+1][tChars.length+1];
-
- for(int i = 0; i < sChars.length+1; i++) {
- matrix[i][0] = i;
- }
-
- for(int i = 0; i < tChars.length+1; i++) {
- matrix[0][i] = i;
- }
-
- for(int i = 1; i < sChars.length+1; i++) {
- for(int j = 1; j < tChars.length+1; j++) {
-
- int cost = 0;
- if(sChars[i-1] == tChars[j-1]) {
- cost = 0;
- } else {
- cost = 1;
- }
-
- matrix[i][j] = this.min(
- matrix[i-1][j]+1,
- matrix[i][j-1]+1,
- matrix[i-1][j-1]+cost);
- }
- }
-
- return matrix[sChars.length][tChars.length];
- }
-
-
- private int min(int a, int b, int c) {
- int min = a < b ? a : b;
- min = c < min ? c : min;
- return min;
- }
-
-
- private void printMatrix(int[][] matrix) {
- for(int i = 0; i < matrix.length; i++) {
- for(int j = 0; j < matrix[0].length; j++) {
- System.out.print(matrix[i][j] + " ");
- }
- System.out.println();
- }
- }
- }
发表于 @
2008年12月16日 03:47:00 | | 编辑|
举报| 收藏