题解 | #DNA序列#
DNA序列
https://www.nowcoder.com/practice/e8480ed7501640709354db1cc4ffd42a
/*本来看来前辈的想用队列,写着写着发现其实队列的作用就是找到当比例最大是最开始字母的下标,那不如直接用flag记录
然后当我们找到最大比例是,直接从下标flag开始,遍历k个字符串,就是我们所要求的字串。*/
#include <iostream>
#include <queue>
using namespace std;
int main() {
string s;
int k;
cin>>s>>k;
int left,right;
double temp=0.00;
double sum=0.00;
int flag=0;
for(int i=0;i<k;i++){
if(s[i]=='g'&&s[i]=='c'){
sum+=1.00;
}
}
temp=sum/(double)k;
for(left=0,right=k;right<s.size();right++,left++){
if(s[left]=='G'||s[left]=='C'){
sum-=1.00;
}
if(s[right]=='G'||s[right]=='C'){
sum+=1.00;
}
if(temp<sum/(double)k){
temp=sum/(double)k;
flag=left+1;
}
}
for(int i=flag;i<flag+k;i++){
cout<<s[i];
}
}
// 64 位输出请用 printf("%lld")
查看17道真题和解析
