每日OJ题_牛客_HJ63DNA序列_滑动窗口_C++_Java

news2024/10/23 5:32:04

目录

牛客_HJ63DNA序列_滑动窗口

题目解析

C++代码

Java代码


牛客_HJ63DNA序列_滑动窗口

孩子们的游戏(圆圈中最后剩下的数)_牛客题霸_牛客网

描述:

        一个 DNA 序列由 A/C/G/T 四个字母的排列组合组成。 G 和 C 的比例(定义为 GC-Ratio )是序列中 G 和 C 两个字母的总的出现次数除以总的字母数目(也就是序列长度)。在基因工程中,这个比例非常重要。因为高的 GC-Ratio 可能是基因的起始点。

        给定一个很长的 DNA 序列,以及限定的子串长度 N ,请帮助研究人员在给出的 DNA 序列中从左往右找出 GC-Ratio 最高且长度为 N 的第一个子串。

DNA序列为 ACGT 的子串有: ACG , CG , CGT 等等,但是没有 AGT , CT 等等


题目解析

        用滑动窗口的思想,首先用一个长度为n的窗口覆盖字符串前n部分子串,统计这里的CG数量,并暂时作为最大值。然后窗口右移,如果左边出去的是CG那么窗口内的CG数量减少一个,如果右边进来的是CG那么窗口内的CG数量增加一个,每次滑动都统计窗口内的CG数量,与临时最大值比较,记录下最大窗口的起始下标。

窗口右端抵达字符串末尾时结束,根据下标用substr函数输出字符串含CG最高的子串。

C++代码

#include <climits>
#include <iostream>
using namespace std;

int main()
{
    string str;
    int n = 0;
    cin >> str >> n;
    int sz = str.size();
    int cnt = 0; // 统计C和G数量

    int begin = 0, cur = 0, maxCnt = INT_MIN;
    while(cur < sz - n)
    {
        cnt = 0;
        for(int i = cur; i < cur + n; ++i)
        {
            if(str[i] == 'C' || str[i] == 'G')
                ++cnt;
        }
        if(cnt > maxCnt)
        {
            begin = cur;
            maxCnt = cnt;
        }
        ++cur;
    }
    string res(str.begin() + begin, str.begin() + begin + n);
    cout << res << endl;
    return 0;
}

Java代码

import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main
{
    public static void main(String[] args) 
    {
        Scanner in = new Scanner(System.in);
        char[] s = in.next().toCharArray();
        int x = in.nextInt();
        int begin = 0; // 标记结果的起始位置
        int maxCount = 0; // 统计以前窗⼝内 C + G 的最⼤值
        int left = 0, right = 0, n = s.length;
        int count = 0; // 统计窗⼝内 C + G 
        while(right < n)
        {
            if(s[right] == 'C' || s[right] == 'G') count++;
            while(right - left + 1 > x)
            {
                if(s[left] == 'C' || s[left] == 'G') count--;
                left++;
            }
            if(right - left + 1 == x)
            {
                if(count > maxCount)
                {
                    begin = left;
                    maxCount = count;
                }
            }
            right++;
        }
        for(int i = begin; i < begin + x; i++)
        {
            System.out.print(s[i]);
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2213366.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[SQL] 数据库图形化安装和使用

一 安装 1.1 图形化安装 下载DataGrip安装包 点击此处一直下一步即可。点击免费使用。 进去界面后,选择新建一个项目 点击加号&#xff0c;创建一个Mysql连接。输入Mysql的连接信息。点击DownLoad下载Mysql的驱动 接下来点击创建的mysq项目中后面的三个点&#xff0c;选择…

Facebook的全球影响力:跨文化交流与信息共享的前沿

引言 在数字化时代&#xff0c;社交媒体已成为全球沟通的重要平台。自2004年成立以来&#xff0c;Facebook迅速发展成为拥有超过20亿活跃用户的巨头。其强大的影响力使其成为跨文化交流与信息共享的前沿平台。 跨文化交流的促进 Facebook的多语言支持让来自不同文化背景的用户…

如何在mkdocs-material文档主题下设置多版本文档系统?

引言 前一段时间&#xff0c;参与了PaddleOCR开源项目的文档站点搭建工作&#xff0c;基于mkdocs工具&#xff0c;采用mkdocs-material主题&#xff0c;基于Github Pages来搭建整个文档站点。目前该站点已经搭建完毕&#xff0c; 支持多语言、文档搜索等诸多功能。 最近得知&…

【C++ 算法进阶】算法提升二

算法提升二 最大分配工资问题 &#xff08;贪心&#xff09;题目分析代码详解 数组有序问题 &#xff08;贪心&#xff09;题目分析代码详解 消息流问题 &#xff08;数据结构设计&#xff09;题目分析代码详解 可乐问题 &#xff08;Coding能力&#xff09;题目分析代码详解 司…

YOLOv9下载安装运行

1、进入GitHub的YOLOv9官网 https://github.com/WongKinYiu/yolov92、clone或下载项目 https://github.com/WongKinYiu/yolov9.githttps://codeload.github.com/WongKinYiu/yolov9/zip/refs/heads/main2.1、进入控制台下载项目 git clone https://github.com/WongKinYiu/yol…

在线培训知识库+帮助中心:教育行业智慧学习的创新桥梁

在数字化转型的浪潮中&#xff0c;教育行业正经历着前所未有的变革。为了应对日益增长的学习需求&#xff0c;提升教育质量&#xff0c;构建一个集在线培训知识库与帮助中心于一体的智慧学习环境&#xff0c;已成为教育行业转型升级的重要方向。这一创新模式不仅优化了学习资源…

无人机飞手执照培训费用较高原因分析

无人机飞手执照培训费用较高的原因可以归结为多个方面&#xff0c;以下是对这些原因的具体分析&#xff1a; 一、课程内容的全面性和专业性 无人机飞手执照培训涵盖了从无人机基础知识到高级飞行技巧、从组装调试到故障维修的多个方面。这种全面性和专业性要求培训机构提供高…

猎板PCB测试大讲堂:让你测试的明明白白

在电子研发领域&#xff0c;PCB&#xff08;印刷电路板&#xff09;的检测是确保产品质量的关键环节。主要的检测方式包括飞针测试和测试架测试。以下是这两种技术的详细介绍&#xff0c;旨在为电子研发工程师提供技术资料。 PCB飞针测试&#xff08;Flying Probe Test&#x…

麦克风哪个品牌音质最好,无线领夹麦克风十大品牌推荐

随着科技的进步&#xff0c;无线领夹麦克风的技术也在不断革新。从传统的模拟信号传输到如今的数字信号传输&#xff0c;再到智能降噪、自适应增益控制等先进技术的应用&#xff0c;无线领夹麦克风的录音品质得到了显著提升。然而&#xff0c;市场上仍有一些产品采用过时的技术…

vue2使用pdfjs-dist实现pdf预览(iframe形式,不修改pdfjs原来的ui和控件)

前情提要 在一开始要使用pdf预览的时候&#xff0c;第一次选的是vue-pdf&#xff0c;但是vue-pdf支持的功能太少&#xff0c;缺少了项目中需要的一项-复制粘贴功能 之后我一顿搜搜搜&#xff0c;最终貌似只有pdfjs能用 但是网上支持text-layer的貌似都是用的2.09那个版本。 使…

嵌入式AI博客目录

文章目录 环境搭建ubuntu下载安装c版opencv4.7.0和4.5.0 & 安装opencv4.5.0报错及解决方法ubuntu系统vscode配置c版opencv & 编译运行c播放视频代码&#xff08;包含&#xff1a;vscode使用copencv&#xff0c;创建CmakeList.txt&#xff0c;创建编译项目&#xff09;u…

【干货】2024期中考试成绩公布方式

本学期的期中考试即将拉开帷幕&#xff0c;而考试后的成绩发布往往是老师觉得最复杂耗时的工作。老师完全可以抛弃这种费力耗时的“笨方法”&#xff0c;只需要易查分&#xff0c;即可一分钟完成成绩发布的工作。教师发布省心&#xff0c;家长查询安心。 易查分是一个在线的查询…

智能健康推荐:SpringBoot技术应用

5系统详细实现 5.1 管理员模块的实现 5.1.1 用户管理 基于智能推荐的卫生健康系统的系统管理员可以管理用户管理&#xff0c;可以对用户管理信息添加修改删除以及查询操作。具体界面的展示如图5.1所示。 图5.1 用户管理信息管理界面 5.1.2 科室类型管理 系统管理员可以查看对…

让你的MacOS剪切板变得更加强大,如何解决复制内容覆盖的问题

MacOS的日常使用过程中&#xff0c;肯定少不了复制粘贴&#xff0c;不论是文本内容还是文件&#xff0c;复制粘贴是避不开的操作&#xff0c;如果需要复制粘贴的内容不多&#xff0c;那么普通的复制粘贴就可以完成了&#xff0c;但是当有同样的内容需要输入不同的地方的时候&am…

SAM应用:医学图像和视频中的任何内容分割中的基准测试与部署

医学图像和视频中的任何内容分割&#xff1a;基准测试与部署 目录 摘要&#xff1a;一、引言1.1 SAM2 在医学图像和视频中的应用 二.结果2.1 数据集和评估协议2.2 二维图像分割的评估结果 三 讨论四 局限性和未来的工作五、方法5.1数据来源和预处理5.2 微调协议5.3 评估指标 总…

flask项目创建、flask使用、python使用flask、pycharm创建flask项目

创建项目前python和pycharm要装好 打开pycharm创建项目&#xff1a; 虚拟空间下载flask: pip install -i https://pypi.tuna.tsinghua.edu.cn/simple Flask 下载好后&#xff1a;下载扩展 pip install Flask-SQLAlchemy -i https://mirrors.aliyun.com/pypi/simple/ 目录结构&…

结合空口分析BLE AUDIO之PAC

PAC&#xff0c;published audio capability用于声明audio服务能力&#xff0c;是BLE AUDIO核心服务之一&#xff0c;下面以手机和耳机为例&#xff0c;结合空口分析PAC到底有哪些交互内容&#xff1a; 1&#xff1a;读取Source/Sink PAC 首先手机会读取左耳的Source PAC和Si…

创客项目秀 | 基于XIAO ESP32S3 Sense 的最小 DIY 相机

作者&#xff1a;Md. Khairul Alam 故事背景 我一直对间谍小工具和微型电子产品非常着迷。我一直想创造一个可以装在口袋里的微型相机&#xff0c;能够悄无声息地捕捉精彩瞬间。随着技术的进步和像 Xiao ESP32S3 Sense 这样功能强大的微控制器的出现&#xff0c;我终于有机会实…

自然语言处理:第五十三章 Ollama

代码&#xff1a; ollama/ollama: Get up and running with Llama 3.1, Mistral, Gemma 2, and other large language models. (github.com) 官网&#xff1a; Ollama 写在前面: 笔者更新不易&#xff0c;希望走过路过点个关注和赞&#xff0c;笔芯!!! 写在前面: 笔者更新不易…

Linux YUM设置仓库优先级

1.安装yum-plugin-priorities优先级插件 yum install yum-plugin-priorities -y 2.设置仓库优先级 vim /etc/yum.repos.d/local.repo [local] namecentos7.5 baseurlfile:///mnt enable1 gpgcheck0 priority1 注释&#xff1a; priority1 #数字越小代表优先级越高&#xff…