题目:
解法:
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; } }