public static int editDistance(String a, String b){ // Edit-Matrix int[][] matrix = new int[a.length()+1][b.length()+1]; //Initialisierung for(int i = 0; i < matrix.length; i++){ matrix[i][0] = i; } for(int i = 0; i < matrix[0].length; i++){ matrix[0][i] = i; } //Berechnung der inneren Werte for(int i = 1; i < matrix.length; i++){ for(int j = 1; j < matrix[0].length; j++){ int insertion = matrix[i][j-1] + 1; int deletion = matrix[i-1][j] + 1; int copsub; if (a.charAt(i-1) == b.charAt(j-1)) copsub = matrix[i-1][j-1]; else copsub = matrix[i-1][j-1] + 1; // Minimum waehlen if (insertion < deletion && insertion < copsub) matrix[i][j] = insertion; else if (deletion < insertion && deletion < copsub) matrix[i][j] = deletion; else matrix[i][j] = copsub; } } return matrix[matrix.length-1][matrix[0].length-1]; } public static int qtoRank(String a){ int rSigma = 0; int rank = 0; a = a.toUpperCase(); for (int i = 1; i <= a.length(); i++){ switch(a.charAt(i-1)){ case 'A' : rSigma = 0; break; case 'C' : rSigma = 1; break; case 'G' : rSigma = 2; break; case 'T' : rSigma = 3; break; default: System.exit(1); } rank += rSigma*Math.pow(4, a.length()-i); } return rank; }