Sha256: 78109b6c90c7400d4ddefa9201e278d5d86713a9fbb862db388feacdc16d08f1

Contents?: true

Size: 1.19 KB

Versions: 78

Compression:

Stored size: 1.19 KB

Contents

import java.util.HashMap;
import java.util.Map;

final class NucleotideCounter {
  private final String sequence;

  NucleotideCounter(String sequence) {
    this.sequence = sequence;
    for (char c : sequence.toCharArray()) {
      if (isCountable(c)) {
        throw new IllegalArgumentException(c + " is not a nucleotide");
      }
    }
  }

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

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

Version data entries

78 entries across 78 versions & 1 rubygems

Version Path
trackler-2.2.1.159 tracks/java/exercises/nucleotide-count/.meta/src/reference/java/NucleotideCounter.java
trackler-2.2.1.158 tracks/java/exercises/nucleotide-count/.meta/src/reference/java/NucleotideCounter.java
trackler-2.2.1.157 tracks/java/exercises/nucleotide-count/.meta/src/reference/java/NucleotideCounter.java
trackler-2.2.1.156 tracks/java/exercises/nucleotide-count/.meta/src/reference/java/NucleotideCounter.java
trackler-2.2.1.155 tracks/java/exercises/nucleotide-count/.meta/src/reference/java/NucleotideCounter.java
trackler-2.2.1.154 tracks/java/exercises/nucleotide-count/.meta/src/reference/java/NucleotideCounter.java
trackler-2.2.1.153 tracks/java/exercises/nucleotide-count/.meta/src/reference/java/NucleotideCounter.java
trackler-2.2.1.152 tracks/java/exercises/nucleotide-count/.meta/src/reference/java/NucleotideCounter.java
trackler-2.2.1.151 tracks/java/exercises/nucleotide-count/.meta/src/reference/java/NucleotideCounter.java
trackler-2.2.1.150 tracks/java/exercises/nucleotide-count/.meta/src/reference/java/NucleotideCounter.java
trackler-2.2.1.149 tracks/java/exercises/nucleotide-count/.meta/src/reference/java/NucleotideCounter.java
trackler-2.2.1.148 tracks/java/exercises/nucleotide-count/.meta/src/reference/java/NucleotideCounter.java
trackler-2.2.1.147 tracks/java/exercises/nucleotide-count/.meta/src/reference/java/NucleotideCounter.java
trackler-2.2.1.146 tracks/java/exercises/nucleotide-count/.meta/src/reference/java/NucleotideCounter.java
trackler-2.2.1.145 tracks/java/exercises/nucleotide-count/.meta/src/reference/java/NucleotideCounter.java
trackler-2.2.1.144 tracks/java/exercises/nucleotide-count/.meta/src/reference/java/NucleotideCounter.java
trackler-2.2.1.143 tracks/java/exercises/nucleotide-count/.meta/src/reference/java/NucleotideCounter.java
trackler-2.2.1.142 tracks/java/exercises/nucleotide-count/.meta/src/reference/java/NucleotideCounter.java
trackler-2.2.1.141 tracks/java/exercises/nucleotide-count/.meta/src/reference/java/NucleotideCounter.java
trackler-2.2.1.140 tracks/java/exercises/nucleotide-count/.meta/src/reference/java/NucleotideCounter.java