В настоящее время я работаю с последовательностями ДНК в виде строк, где интроны имеют нижний регистр и экзоны в прописных буквах. Цель метода - как можно быстрее извлечь экзоны в виде струны.
Пример последовательности:
ATGGATGACAGgtgagaggacactcgggtcccagccccaggctctgccctcaggaagggggtcagctctcaggggcatctccctctcacagcccagccctggggatgatgtgggagccccatttatacacggtgcctccttctctcctagAGCCTACATAG
В моей первой версии использовался метод String replaceAll(), но он был особенно медленным:
public String getExons(String sequence) {
return sequence.replaceAll("[atgc]", "");
}
Итак, я пробовал новую версию, которая улучшала производительность, но оставалась довольно медленной:
public String getExons(String sequence) {
StringBuilder exonBuilder = new StringBuilder();
for (int i = 0; i < sequence.length(); i++) {
char c = sequence.charAt(i);
if (c == 'A' || c == 'T' || c == 'G' || c == 'C') exonBuilder.append(c);
}
return exonBuilder.toString();
Есть ли другой способ сделать это, чтобы повысить производительность?