题解 | #DNA序列#
DNA序列
https://www.nowcoder.com/practice/e8480ed7501640709354db1cc4ffd42a
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char str[1000]={0};
scanf("%s\n",str); // 载入基因序列
int len=strlen(str);
int n;
scanf("%d\n",&n); // 载入子串长度
char sub[n]; // 存储GC比例最高的子串
int tmp_gc;
int max_gc;
for(int i=0;i<=len-n;i++){ // 以第i个字节为首字节的情况
tmp_gc=0;
for(int j=0;j<n;j++){
if(str[i+j]=='G' || str[i+j]=='C'){
tmp_gc++;
}
}
if(tmp_gc>max_gc){
max_gc=tmp_gc;
for(int j=0;j<n;j++){
sub[j]=str[i+j];
}
}
}
for(int i=0;i<n;i++){
printf("%c",sub[i]); // 想请问一下,为什么这里如果采用printf(“%s”,sub)的时候会泄露内存?
}
return 0;
}
查看8道真题和解析