我正在编写一个Java程序,该程序对数组(核苷酸序列列表)的字符串(核苷酸序列)内的特定char(nuc)的出现进行计数。这是为了返回字符出现次数最多的字符串。
input:字符串列表(例如{“ aaagt”,“ cgaat”,“ ttt”}),char =“ a” /输出:“ 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
谢谢!
这是一种实现方法,在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();
}
Test
System.out.println(dnaMaxNucleiotide('a', "aaagt","cgaat","ttt"));
输出
aaagt