Подсчет появления char в массиве строк - PullRequest
0 голосов
/ 20 января 2020

Я пишу Java программу, которая считает появление конкретного символа (nu c) в строке (нуклеотидной последовательности) в массиве (список нуклеотидных последовательностей). Он предназначен для возврата строки с наибольшим количеством появлений символа.

input: список строк (например, {"aaagt", "cgaat", "ttt"}), char = "a "/ output:" aaagt "(так как большинство появлений" a ")

Ниже у меня есть версия Python, которую я написал. Как бы это перевести на Java?

def DNAMaxNucleiotide(listStrings, nuc):
    nucCount = 0
    SEQ = ''

    for seq in listStrings:
        newCount = 0
        splitSeq = list(seq)
        for char in splitSeq:
            if char == nuc:
                newCount += 1
        if newCount > nucCount:
            nucCount = newCount
            SEQ = seq
        else:
            pass


    return SEQ

Спасибо!

1 Ответ

1 голос
/ 20 января 2020

Вот один из способов сделать это: Java 8 +:

static String dnaMaxNucleiotide(int codePoint, String... listStrings) {
    return Stream.of(listStrings)
            .max(Comparator.comparingLong(s -> countChar(codePoint, s)))
            .orElse("");
}
private static long countChar(int codePoint, String s) {
    return s.codePoints()
            .filter(cp -> cp == codePoint)
            .count();
}

Тест

System.out.println(dnaMaxNucleiotide('a', "aaagt","cgaat","ttt"));

Выход

aaagt
...