题解 | #DNA序列#
DNA序列
https://www.nowcoder.com/practice/e8480ed7501640709354db1cc4ffd42a
import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNext()) {
String str = in.nextLine();
int n = in.nextInt();
dnaSort(str, n);
}
}
public static void dnaSort(String str, int n) {
HashMap<String, Double> map = new HashMap<>();
ArrayList<String> list = new ArrayList<>();
int left = 0;
int right = n;
while (right <= str.toCharArray().length) {
String substr = str.substring(left, right);
double gcCount = getGCCount(substr);
map.put(substr, gcCount);
list.add(substr);
left++;
right++;
}
Set<String> set = map.keySet();
String maxKey = "" ;
double maxV = 0.0;
for (String key : list) {
Double aDouble = map.get(key);
if (aDouble == maxV) continue;
if (aDouble > maxV) {
maxV = aDouble;
maxKey = key;
}
}
System.out.println(maxKey);
}
public static double getGCCount(String str) {
int count = 0;
for (int i = 0; i < str.toCharArray().length; i++) {
if (str.charAt(i) == 'G' || str.charAt(i) == 'C') {
count++;
}
}
if (count == 0) {
return 0;
} else {
double length = str.toCharArray().length;
return count / length;
}
}
}

