题目:
解法:
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 sequence
if (!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;
}
}