【华为OD题库-098】DNA序列-java

题目

一个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等等
数据范围:字符串长度满足1≤n≤1000,输入的字符串只包含A/C/G/T字母
输入描述:
输入—个string型基因序列,和int型子串的长度
输出描述:
找出GC比例最高的子串,如果有多个则输出第一个的子串
示例1:
输入
ACGT
2
输出
CG
说明
ACGT长度为2的子串有AC,CG,GT3个,其中AC和GT2个的GC-Ratio都为0.5,CG为1,故输出CG
示例2:
输入
AACTGTGCACGACCTGA
5
输出
GCACG
说明
虽然CGACC的GC-Ratio也是最高,但它是从左往右找到的GC-Ratio最高的第2个子串,所以只能输出GCACG.

思路

维护一个长度为N的滑动窗口,统计窗口内出现C或G的最大次数,返回此时的窗口即可

题解

package hwod;import java.util.Scanner;public class DNASeq {public static void main(String[] args) {Scanner sc = new Scanner(System.in);String seq = sc.nextLine();int n = sc.nextInt();System.out.println(dNASeq(seq, n));}private static String dNASeq(String seq, int n) {int cnt = 0;for (int k = 0; k < n; k++) {if ("CG".contains(seq.substring(k, k + 1))) {cnt++;}}int i = 0, j = i + n - 1;int left = i, right = j;int maxNum = cnt;do {if ("CG".contains(seq.substring(++j, j + 1))) {cnt++;}if ("CG".contains(seq.substring(i++, i))) {cnt--;}if (cnt > maxNum) {maxNum = cnt;left = i;right = j;}} while (j < seq.length()-1);return seq.substring(left, right + 1);}
}

推荐

如果你对本系列的其他题目感兴趣,可以参考华为OD机试真题及题解(JAVA),查看当前专栏更新的所有题目。

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

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

相关文章

腾讯云debian服务器的连接与初始化

目录 1. 远程连接2. 软件下载3. 设置开机自启动 1. 远程连接 腾讯云给的服务器在安装好系统之后&#xff0c;只需要在防火墙里面添加一个白名单&#xff08;ip 或者域名&#xff09;就能访问了。 防火墙添加本机WLAN的IPv4白名单&#xff0c;本地用一个远程工具连接&#xff…

免费api接口大全分享

免费api接口大全分享~使用第三方接口开发能大大加速我们的开发速度&#xff01; 短信验证码&#xff1a;可用于登录、注册、找回密码、支付认证等等应用场景。支持三大运营商&#xff0c;3秒可达&#xff0c;99.99&#xff05;到达率&#xff0c;支持大容量高并发。通知短信&a…

Java第十七章总结

数据库基础 SQL语言 1、select 语句 select 语句用于从数据中检索数据。语法如下&#xff1a; SELECT 搜选字段列表 FROM 数据表名 WHERE 条件表达式 GROUP BY 字段名 HAVING 条件表达式(指定分组的条件) ORDER BY 字段名[ASC|DESC] 2、insert 语句 insert 语句用于向表中插入…

SpringMVC---获取参数

文章目录 传递单参数传递对象传递多个参数参数重命名传递JSON对象直接从 url 中传递参数 省略变量上传文件获取Cookie获取Header设置Session读取Session 传递单参数 RequestMapping("/name")//1. 传递参数//注&#xff1a;传参的时候一定要传递包装类型而非基础类型…

动手学深度学习2 安装环境

pytorch环境安装 1. windows 环境安装2. mac环境安装3. linux环境安装1. 申请云服务器 链接机器--Ubuntu2. 环境配置 4. 不安装环境直接使用colabQA 课程链接&#xff1a; https://www.bilibili.com/video/BV18p4y1h7Dr?p1&vd_sourceeb04c9a33e87ceba9c9a2e5f09752ef8 1.…

Pycharm中如何使用Markdown?只需装这个插件!

一、前言 由于Markdown的轻量化、易读易写特性&#xff0c;并且对于图片&#xff0c;图表、数学式都有支持&#xff0c;许多网站都广泛使用Markdown来撰写帮助文档或是用于论坛上发表消息。 如GitHub、Reddit、Diaspora、Stack Exchange、OpenStreetMap 、SourceForge、简书等…

用ChatGPT辅助写个人性化显示结构体数据的类

初衷 我们产品有很多状态信息都持久化到文件中,从而数据库意外中断后重启还能知道之前的状态信息。文件中数据是按c struct直接灌进去的,所以我想写个通用类用来漂亮的显示文件内容。 大概如此这般展示: STAT_FILEHD size: 0x258 +0 version=64 +4 filetype=b\x07…

嵌入式linux面试题分享

系统相关 以下是一些嵌入式Linux面试题&#xff0c;并附有答案&#xff1a; 题目&#xff1a;什么是嵌入式Linux&#xff1f; 答案&#xff1a;嵌入式Linux是一种针对嵌入式系统的Linux操作系统。它具有轻量级、可定制和可扩展性强的特点&#xff0c;适用于各种嵌入式设备&am…

spring之基于注解管理Bean

学习的最大理由是想摆脱平庸&#xff0c;早一天就多一份人生的精彩&#xff1b;迟一天就多一天平庸的困扰。各位小伙伴&#xff0c;如果您&#xff1a; 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持&#xff0c;想组团高效学习… 想写博客但无从下手&#xff0c;急需…

[每周一更]-(第28期):Windows服务自启动设置

需求&#xff1a;有时候有些软件&#xff0c;想在开机后自启动&#xff0c;但是由于屏幕需要录入密码&#xff0c;但是普通开机启动的应用&#xff0c;需要在录入密码进去Windows界面才能启动&#xff0c;但是 不用解锁屏幕但需要运行的应用还是有的&#xff0c;比如一些软件远…

《每天一分钟学习C语言·二》

1、当使用const关键字变量就无法修改可当常量来用。常量指针不能通过指针来改变变量的值&#xff0c;但可以通过其他引用来改变变量的值常量指针也可以指向其他变量地址&#xff0c;如 int a5,b6; const int *pt &a; *pt6; //错误 a6; //正确 pt&b; //正确指针常量指…

互式流程图|BPMN JointJS+ JavaScript 3.7.3 Crack

JointJS 是 JavaScript 图表库为卓越的 UI 提供支持 使用经过验证的库快速、自信地构建高级视觉和无代码/低代码应用程序。 赋能全球行业领导者 使用 JointJS 构建的图表 一个库&#xff0c;‍无限 UI 选项 直接在您的应用程序中享受交互式流程图、BPMN 和其他图表工作室。利用…

7000字详解ERP管理系统!

在当今竞争激烈的商业世界中&#xff0c;中小企业不仅需要保持灵活性&#xff0c;更需要高效管理企业资源。 你可能听说过ERP系统&#xff0c;但它究竟是什么&#xff1f;它为何成为中小企业管理的不二选择&#xff1f;又是如何助力中小企业整合资源、提升效率&#xff0c;并在…

C 库函数 - asctime()

描述 C 库函数 char *asctime(const struct tm *timeptr) 返回一个指向字符串的指针&#xff0c;它代表了结构 struct timeptr 的日期和时间。 声明 下面是 asctime() 函数的声明。 char *asctime(const struct tm *timeptr)参数 timeptr 是指向 tm 结构的指针&#xff0c…

使用极狐gitlab初始化导入本地项目

本地有项目的情况需要同步到极狐gitlab上 第一步&#xff1a; 在gitlab上新创建一个空项目 ⚠️⚠️⚠️这里需要注意红色圈住的地方一定不要选择&#xff0c;因为选择了这个后续会有不必要的麻烦 第二步 在本地项目中删除原来的.git文件(这一步如果是新项目可以忽略&#…

VMware网络设置+Linux网卡设置+主机与虚拟机相互Ping通

目录 1. Linux网卡设置 1.1 ifcfg-ens33 1.2 修改配置信息 1.3 添加IP信息 1.4 重启网卡、关闭防火墙 2. VMware网络设置 3. 设置主机网络 4. 测试主机与虚拟机网络是否连通 4.1 主机ping虚拟机的Linux 4.2 虚拟机Linux来ping主机 1. Linux网卡设置 刚开始安装的Lin…

〖Python网络爬虫实战㊸〗- 极验滑块介绍(五)

订阅&#xff1a;新手可以订阅我的其他专栏。免费阶段订阅量1000 python项目实战 Python编程基础教程系列&#xff08;零基础小白搬砖逆袭) 说明&#xff1a;本专栏持续更新中&#xff0c;订阅本专栏前必读关于专栏〖Python网络爬虫实战〗转为付费专栏的订阅说明作者&#xff1…

ubuntu x86环境创建armv8 ubuntu2004 64位docker服务器

在arm编译速度慢&#xff0c;运行vscode远程耗费资源&#xff0c;因此尝试在ubuntu服务器上搭建armv8 64位编译环境&#xff0c;过程很简单&#xff0c;记录如下 一、安装qemu解释器 # 宿主机安装解释器和时区设置 sudo apt install -y qemu-user-static tzdata # 重启docker…

Java对接腾讯多人音视频房间回调接口示例

在前面我们已经对接好了腾讯多人音视频房间相关内容&#xff1a;Java对接腾讯多人音视频房间示例 为了完善业务逻辑&#xff0c;我们还需要对接它的一些回调接口 官方文档地址 主要就下面这些 这里因为比较简单直接上代码 里面有些工具类和上一章一样这里就没贴&#xff0c;需要…

React面试题:React.Component和React.PureComponent的区别?

回答思路&#xff1a;什么是PureComponent-->Component更新过程-->PureComponent更新过程-->PureComponent的优点 什么是PureComponent&#xff1a;pure&#xff1a;纯净的&#xff0c;即为纯组件&#xff0c;可以用来优化React程序&#xff0c;减少render函数执行的…