题解 | #DNA序列#
DNA序列
https://www.nowcoder.com/practice/e8480ed7501640709354db1cc4ffd42a
要注意比例的计算和BigDecimal的compareTo会调换位置
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;
import java.util.stream.Collectors;
/**
* DNA序列
*
* ACGT
*/
public class DNASeq {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
List<String> inputList = new ArrayList<>();
while (scanner.hasNext()) {
String nextLine = scanner.nextLine();
if (inputList.size() == 1) {
String dnaSeq = inputList.get(0);
int subStrLength = Integer.parseInt(nextLine);
List<String> subStrList = new ArrayList<>();
char[] charArray = dnaSeq.toCharArray();
for (int i = 0; i <= charArray.length - subStrLength; i++) {
String temp = "";
for (int j = i; j < i + subStrLength; j++) {
temp += String.valueOf(charArray[j]);
}
subStrList.add(temp);
}
List<SelfPair<String, BigDecimal>> subStrObjList = new ArrayList<>();
// 算占比
for (String subStr : subStrList) {
char[] toCharArray = subStr.toCharArray();
Long gCount = 0L;
Long cCount = 0L;
for (char ch : toCharArray) {
if (ch == 'G') {
gCount++;
}
if (ch == 'C') {
cCount++;
}
}
BigDecimal divide = BigDecimal.valueOf((gCount + cCount))
.divide(BigDecimal.valueOf(subStr.length()),4, 3);
subStrObjList.add(new SelfPair<>(subStr, divide));
}
// compareTo会调换顺序
List<SelfPair<String, BigDecimal>> collect = subStrObjList.stream()
.sorted(Comparator.comparing(SelfPair::getValue)).collect(Collectors.toList());
SelfPair<String, BigDecimal> resultPair = collect.get(collect.size() - 1);
List<SelfPair<String, BigDecimal>> result = collect.stream()
.filter(obj -> obj.value.equals(resultPair.value)).collect(Collectors.toList());
System.out.println(result.get(0).key);
inputList.clear();
} else {
inputList.add(nextLine);
}
}
}
private static class SelfPair<K, V> {
private K key;
private V value;
public SelfPair(K key, V value) {
this.key = key;
this.value = value;
}
public K getKey() {
return key;
}
public V getValue() {
return value;
}
}
}
SHEIN希音公司福利 276人发布
