Mere om tegnstrenge, StringBuffer

matfys.kvl.dk

Mere om tegnstrenge, StringBuffer

Match mellem to nucleotider n1 og n2

public class DNA {

// ...

}

// Match two nucleotides, return resulting nucleotide or ’X’ for mis-match

private static char nucleotideMatch(char n1, char n2) {

if (n1 == n2)

return n1;

else if (n1 == ’N’)

return n2;

else if (n2 == ’N’)

return n1;

else

return ’X’;

}

// ...

Programmering 2004 KVL Side 6-9

Find match mellem to DNA sekvenser

Givet to DNA-sekvenser af samme længde, find deres match.

Idé:

Tjek alle nukleotider i de to sekvenser fra venstre mod højre.

Så snart et mismatch ’X’ findes, ved vi at de to sekvenser ikke matcher.

Hvis vi derimod når til enden uden et mismatch, så matcher sekvenserne.

I dette tilfælde skal resultatet være match’et mellem de to sekvenser; ellers skal det være null.

Metode matches, find match mellem denne sekvens og en anden:

public DNA matches(DNA other) { ... }

Programmering 2004 KVL Side 6-10

public class DNA {

// ...

}

// Match this DNA sequence to another, return matched sequence (if match),

// return null for no match.

public DNA matches(DNA other) {

int length = sequence.length();

if (length != other.sequence.length())

return null; // Not same length

String matchedSeq = "";

for (int i = 0; i < length; i++ ) {

char match = nucleotideMatch(sequence.charAt(i),

other.sequence.charAt(i));

if (match == ’X’)

return null; // Mismatch

matchedSeq = matchedSeq + match;

}

return new DNA(matchedSeq);

}

// ...

Programmering 2004 KVL Side 6-11

Test af matches

public class TestDNA2 {

public static void main(String [] args) {

DNA d1 = new DNA("NAGCTGAN");

DNA d2 = new DNA("TAGNTGAN");

DNA d3 = new DNA("TAGTTGAN");

}

}

System.out.println("d1: " + d1);

System.out.println("d2: " + d2);

System.out.println("d3: " + d3);

System.out.println("d1 matched to d2: " + d1.matches(d2));

System.out.println("d1 matched to d3: " + d1.matches(d3));

Programmering 2004 KVL Side 6-12

More magazines by this user
Similar magazines