题目:
解法:
package exercism;
import java.util.HashMap;
import java.util.Map;public class NucleotideCount {
static Map<Character,Integer> nucleotideMap = new HashMap<>();public NucleotideCount(String sequence) {
// check sequenceif (!checkIfVaild(sequence)) {
throw new IllegalArgumentException("Invalid sequence");}nucleotideMap.put('A',0);nucleotideMap.put('C',0);nucleotideMap.put('G',0);nucleotideMap.put('T',0);for (Character c:sequence.toCharArray()) {
int newCount = nucleotideMap.get(c).intValue() + 1;nucleotideMap.replace(c,newCount);}}/*** get single nulceotide's count*/public int count(char c) {
return nucleotideMap.get(c);}/*** get all nulceotide's count*/Map<Character,Integer> getNucleotideMap() {
return nucleotideMap;}/*** check if the sequence is valid*/boolean checkIfVaild (String sequence) {
// check if sequence only contains 'G' 'A' 'C' 'T'for (int i = 0; i < sequence.length(); i++) {
if (!contains(sequence.charAt(i))) {
return false;}}return true;}/*** check if a char belong to {G,A,C,T}*/boolean contains(char c) {
for (int i = 0; i < nucleotideMap.size(); i++) {
if (!nucleotideMap.values().stream().anyMatch(e -> e==c)) {
return false;}}return true;}}