当前位置: 代码迷 >> 综合 >> exercism————NucleotideCount
  详细解决方案

exercism————NucleotideCount

热度:25   发布时间:2023-12-13 18:10:42.0

题目:

在这里插入图片描述

解法:

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;}}