Tuesday, September 22, 2009

HW 3 Example

Below is my solution for the DNA homework. There are other ways to solve this problem.

import java.util.Scanner;

public class DNASearch {
 
 static final int MAX_ERRORS = 1;
 
 public static void main(String[] args){
  String dna = 
       "ACAAGATGCCATTGTCCCCCGGCCTCCTGCTGCTGCTGCTCTCCGGGGCCACGGCCACCGCTGCCCTGCC" +
    "CCTGGAGGGTGGCCCCACCGGCCGAGACAGCGAGCATATGCAGGAAGCGGCAGGAATAAGGAAAAGCAGC" +
    "CTCCTGACTTTCCTCGCTTGGTGGTTTGAGTGGACCTCCCAGGCCAGTGCCGGGCCCCTCATAGGAGAGG" +
    "AAGCTCGGGAGGTGGCCAGGCGGCAGGAAGGCGCACCCCCCCAGCAATCCGCGCGCCGGGACAGAATGCC" +
    "CTGCAGGAACTTCTTCTGGAAGACCTTCTCCTCCTGCAAATAAAACCTCACCCATGAATGCTCACGCAAG" +
    "TTTAATTACAGACCTGAA";

  Scanner keyboard = new Scanner(System.in);
  System.out.print("Enter query:");
  String query = keyboard.next();
  for (int dnaIndex =0; dnaIndex < dna.length(); dnaIndex++){ //start comparing at every index
   int numMatches = 0;
   //calculate the number of matches between dna[dnaIndex to dnaIndex+query.lenth()] and query
   for (int queryIndex = 0; queryIndex < query.length() && queryIndex + dnaIndex  < dna.length(); queryIndex++){
    if (dna.charAt(dnaIndex + queryIndex) == query.charAt(queryIndex))
     numMatches++;
   }
   if (numMatches >= query.length() - MAX_ERRORS){
    System.out.println("Match at position " + dnaIndex);
   }
  }
 }
}

No comments: