题解 | #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")

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务