题解 | #DNA序列#
DNA序列
https://www.nowcoder.com/practice/e8480ed7501640709354db1cc4ffd42a
#include <stdio.h> #include <string.h> #define max(x,y) x>y?x:y int ComputeGCNum(char str[])//计算有多少个GC { int cntGC=0; for(int i=0;i<strlen(str);i++) { if(str[i]=='G'||str[i]=='C') { cntGC++; } } return cntGC; } int main() { char str[1009]={0}; scanf("%s",str); int lenStr=strlen(str); int n=0; scanf("%d",&n); if(n>=lenStr)//如果N太大超过原字符长度,则直接输出原字符串 { printf("%s",str); return 0; } char strN[1009]={0}; char strMAXGC[1009]={0}; int pos=0; int maxGC=0; while((pos+n)<=lenStr)//用pos做头位置,用‘\0’去截取N长度的子字符串。 { strcpy(strN,&str[pos]); strN[n]='\0'; int cnttmp=ComputeGCNum(strN); if(maxGC<cnttmp)//取多GC的子串存入最大子串变量。 { maxGC=cnttmp; strcpy(strMAXGC,strN); } pos++; } printf("%s",strMAXGC);//输出 return 0; }