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