import java.util.HashMap;
import java.util.Map;
public final class DNA {
private final String sequence;
public DNA(String sequence) {
this.sequence = sequence;
}
public int count(char base) {
if (isCountable(base))
throw new IllegalArgumentException(base + " is not a nucleotide");
try {
return nucleotideCounts().get(base);
} catch (NullPointerException e) {
return 0;
}
}
private static boolean isCountable(char base) {
final String COUNTABLE_NUCLEOTIDES = "ACGT";
return COUNTABLE_NUCLEOTIDES.indexOf(base) == -1;
}
public Map<Character, Integer> nucleotideCounts() {
Map<Character, Integer> counts = emptyCounts();
for (char c : sequence.toCharArray()) {
counts.put(c, counts.get(c) + 1);
}
return counts;
}
private static Map<Character, Integer> emptyCounts() {
Map<Character, Integer> counts = new HashMap<Character, Integer>();
counts.put('A', 0);
counts.put('C', 0);
counts.put('T', 0);
counts.put('G', 0);
return counts;
}
}