题解 | #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; }