当前位置: 首页 > news >正文

Rosalind Java|Speeding Up Motif Finding

Rosalind编程问题之计算错误矩阵(failure array)输出前后缀检索匹配。

Speeding Up Motif Finding

Problem:
A prefix of a length n string s is a substring s[1:j]; a suffix of s is a substring s[k:n].

The failure array of s is an array P of length n for which P[k] is the length of the longest substring s[j:k] that is equal to some prefix s[1:k−j+1], where j cannot equal 1 (otherwise, P[k] would always equal k). By convention, P[1]=0.

Given: A DNA string s (of length at most 100 kbp) in FASTA format.
Sample input

Rosalind_87
CAGCATGGTATCACAGCAGAG

Return: The failure array of s.
Sample output

0 0 0 1 2 0 0 0 0 0 0 1 2 1 2 3 4 5 3 0 0


本题定义了一个概念叫做错误矩阵(failure array)。错误矩阵的元素数量与题目给出的一段字符序列长度是相等的。从头遍历一段字符序列s,当遍历到第k个字符时,前k个字符会组成一段子序列s[1:k]。此时,子序列前j个字符(子序列前缀)和后j个字符(子序列后缀)如果相等,那么j就是当下的最长匹配数。当j从1到k-1逐次递增时,产生的子序列前缀和后缀会逐渐延长,并经历数次比对,若前缀等于后缀,则此时的j会更新上一个j,成为新的最长匹配数。当j遍历完时,最大的j会被记录在错误矩阵第k个位置,即p[k]。以此类推得到错误矩阵所有的元素。

解题思路如下:
1.手动输入读取DNA序列。
2.设定字符i以截取序列。
3.设定字符j以截取子序列的前缀和后缀。
4.若前缀=后缀,则记录当下的j,依次迭代。


代码如下:

public class AAAA_Speeding_Up_Motif_Finding {public static void main(String[] args) {//1.输入DNA序列Scanner sc = new Scanner(System.in);System.out.println("请输入DNA序列:");String DNA = sc.nextLine();for (int i = 1; i <= DNA.length(); i++) {//第i个字符代表此时的错误矩阵数值,n个字符就有n个数值输出int longest = 0;for (int j = 0; j < i; j++) {//j表示前缀后移碱基数和后缀前移碱基数,i和j不能相等,否则最长序列一定是全长String prefs = DNA.substring(0, j);String suffs = DNA.substring(i - j, i);if (prefs.equals(suffs)) {longest = j;}}System.out.print(longest + " ");}}
}

相关文章:

Rosalind Java|Speeding Up Motif Finding

Rosalind编程问题之计算错误矩阵&#xff08;failure array&#xff09;输出前后缀检索匹配。 Speeding Up Motif Finding Problem&#xff1a; A prefix of a length n string s is a substring s[1:j]; a suffix of s is a substring s[k:n]. The failure array of s is a…...

打印的前后顺序

面试题经常会有 <script>console.log(1)setTimeout(function(){console.log(2)})console.log(3)let pnew Promise((resolve,reject) >{console.log(4)resloved(hhhhhh)})p.then(res >{console.log(res)console.log(5)},res >{console.log(7)})console.log(6)&l…...

Android Retrofit使用详情

一、 Retrofit是什么 Retrofit是Android用来接口请求的网络框架&#xff0c;内部是基于OkHttp实现的&#xff0c;retrofit负责接口请求的封装&#xff0c;retrofit可以直接将接口数据解析为Bean类、List集合等&#xff0c;直接简化了中间繁琐的数据解析过程 二、 Retrofit的简单…...

安全加密算法

常用加密算法 对称加密 加密和解密用到的密钥是相同的&#xff0c;这种加密方式加密速度非常快&#xff0c;适合经常发送数据的场合。缺点是密钥的传输比较麻烦。常用对称加密算法如下&#xff1a; DES&#xff1a;密钥长度8个字节&#xff0c;安全性不足&#xff0c;已被证明…...

软件测试|使用matplotlib绘制多种饼图

简介 Matplotlib是一个强大的数据可视化库&#xff0c;它允许我们创建各种类型的图表&#xff0c;包括饼图。饼图是一种用于显示数据分布的常见图表类型。在本文中&#xff0c;我们将介绍如何使用Matplotlib创建不同类型的饼图&#xff0c;并提供示例代码。 创建标准饼图 首…...

vue3-响应式基础之ref

声明响应式状态 ref() 在组合式 API 中&#xff0c;推荐使用 ref() 函数来声明响应式状态&#xff1a; ref() 接收参数&#xff0c;并将其包裹在一个带有 .value 属性的 ref 对象中返回&#xff1a; import { ref } from vue const count ref(0)console.log(count) // { va…...

华为网络设备 通过路由器子接口 Dot1q终结子接口实现跨VLAN通信

(二层交换机直接跳过三层交换价接入路由器时才使用该配置。推荐使用三层交换机建立VLANIF配置更简洁明了。如果VLAN较少可直接配置&#xff1b;路由器接口&#xff0c;一个物理接口一个VLAN) S1配置 vlan batch 2 to 3interface GigabitEthernet0/0/1port link-type trunkpor…...

代码随想录算法训练48 | 动态规划part09

今天就是打家劫舍的一天&#xff0c;这个系列不算难&#xff0c;大家可以一口气拿下。 198.打家劫舍 视频讲解&#xff1a;动态规划&#xff0c;偷不偷这个房间呢&#xff1f;| LeetCode&#xff1a;198.打家劫舍_哔哩哔哩_bilibili 代码随想录 213.打家劫舍II 视频讲解&am…...

2024最新适用于 Windows 、Mac 的最佳屏幕录制软件

屏幕录制软件可以帮助我们录制 PC 和MacBook的实时屏幕视频。如果您想为 优酷录制视频&#xff0c;或者您正在为您的公司制作基于视频的项目&#xff0c;并且需要捕获屏幕的实时视频录制&#xff0c;那么我们在此列出了 一 款适合您的 Windows 、Mac的 2024 年最佳屏幕录制软件…...

【Docker】概述与安装

&#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于Docker的相关操作吧 目录 &#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 一. Docker的概述 1.Docker为什么出现 2…...

衡水学院新人真题百练2022(1-20)修订版

​ 1 重要的话说三遍 分数 5 作者 陈越 单位 浙江大学 这道超级简单的题目没有任何输入。 你只需要把这句很重要的话 —— “I’m gonna WIN!”——连续输出三遍就可以了。 注意每遍占一行&#xff0c;除了每行的回车不能有任何多余字符。 #include<stdio.h> int…...

远程调用(OpenFeign)

远程调用 何为远程调用?例如:单体服务时,A模块的功能涉及到引用B模块的功能,那我们需要在A模块中注入B模块的相关服务类并调用其方法;那么同样的逻辑在微服务体系下,就会变成了A服务的功能需要调用B服务的功能,这就形成了服务间调用,也称为远程调用。 目前来说,微服务…...

智能光栅光片显微成像技术的LabVIEW解决方案

智能光栅光片显微成像技术的LabVIEW解决方案 在生物医学研究中&#xff0c;高效的成像技术对于捕捉细胞内罕见和复杂事件至关重要。智能光栅光片显微技术&#xff08;smartLLSM&#xff09;的出现&#xff0c;代表了LabVIEW软件在高端成像领域的革命性应用&#xff0c;这项技术…...

手撕乘积(**Multiplication** **Product**): 穷举和图示(2) 点积的几何意义

手撕乘积(Multiplication & Product): 穷举和图示(2) 点积的几何意义 点乘 x 3 y 5 xNda np.arange(x) >>> array([0, 1, 2]) x2Nda xNda*21 >>> array([1, 3, 5]) yNda np.arange(1, y) >>> array([1, 2, 3, 4]) xyNda np.meshgrid(xN…...

postman环境变量全局变量设置

postman环境变量、全局变量设置 在公司中&#xff0c;一般会存在开发环境、测试环境、线上环境等&#xff0c;如果需要在不 同的环境下切换做接口测试&#xff0c;显然我们需要把所有接口的域名进行修改&#xff0c;如果接 口测试用例较多&#xff0c;那么修改会非常费力&…...

Linux 内核线程

文章目录 一、内核线程二、内核线程与普通进程的异同三、内核线程创建3.1 kernel_thread3.2 kthread_create 四、内核线程的退出四、示例代码参考资料 一、内核线程 内核线程就是内核的分身&#xff0c;一个分身可以处理一件特定事情。Linux内核使用内核线程来将内核分成几个功…...

Golang学习之路一七fmt的使用

Golang学习之路一七fmt的使用 格式化参数列表 格式含义%%一个%字面量%b一个二进制整数值(基数为 2)&#xff0c;或者是一个(高级的)用科学计数法表示的指数为 2 的浮点数%c字符型。可以把输入的数字按照 ASCII 码相应转换为对应的字符%d一个十进制数值(基数为 10)%e以科学记数…...

windows使用redis-安装和配置

windows使用redis 安装和配置 下载安装方式一-使用压缩包安装解压到指定的文件Redis安装为Windows服务安装成功 方式二-MSI安装包安装完成 Redis配置远程访问1.修改配置文件redis.windows.conf2.修改完redis配置文件&#xff0c;必须重启redis 下载 先下载Redis for windows 的…...

Kafka系列(一)

内容 该系列主要是复习期间&#xff0c;通过浏览资料记录的一些笔记和重点&#xff0c;用于日常学习和学习后的总结。 组件概念 broker 一个Kafka的集群通常由多个broker组成&#xff0c;这样才能实现负载均衡、以及容错 broker是无状态&#xff08;Sateless&#xff09;的…...

Kotlin中的委托

在Kotlin中&#xff0c;委托是一种强大的设计模式&#xff0c;它允许一个类将其一些职责委托给另一个类。这种机制通过关键字by来实现。委托有助于代码的重用&#xff0c;降低耦合性&#xff0c;并提供更清晰的类设计。在Kotlin中&#xff0c;有两种主要类型的委托&#xff1a;…...

嵌入式系统开发核心技术解析与实践

嵌入式系统开发核心技术专题1. 嵌入式开发基础体系1.1 C语言核心要点在嵌入式开发中&#xff0c;C语言作为最接近硬件的编程语言&#xff0c;需要掌握以下关键技术点&#xff1a;指针深度应用&#xff1a;包括函数指针、回调函数实现、内存操作等核心概念内存管理机制&#xff…...

AnimateDiff深度探索:如何零训练解锁个性化动画生成?

AnimateDiff深度探索&#xff1a;如何零训练解锁个性化动画生成&#xff1f; 【免费下载链接】AnimateDiff Official implementation of AnimateDiff. 项目地址: https://gitcode.com/gh_mirrors/an/AnimateDiff 发现AI动画生成的新境界&#xff01;AnimateDiff作为一款…...

开源情报员:OpenClaw+nanobot镜像竞品动态追踪器

开源情报员&#xff1a;OpenClawnanobot镜像竞品动态追踪器 1. 为什么需要自动化竞品追踪 作为一名独立开发者&#xff0c;我每天需要花费大量时间手动检查竞品的GitHub仓库更新。这种重复性工作不仅效率低下&#xff0c;还容易遗漏关键信息。直到我发现OpenClaw与nanobot镜像…...

不止是编译:深入理解OpenHarmony XTS测试套件(acts/hats/dcts)与你的代码质量守护

不止是编译&#xff1a;深入理解OpenHarmony XTS测试套件与代码质量守护 在OpenHarmony生态系统中&#xff0c;代码质量保障从来不是简单的编译通过就能解决的问题。当我们谈论XTS测试套件时&#xff0c;很多开发者第一反应是"如何编译运行"&#xff0c;却忽略了这套…...

Ubuntu 20.04 下 Vitis 2021.2 离线安装全记录:从77G压缩包到环境变量配置(附磁盘分区建议)

Ubuntu 20.04环境下Vitis 2021.2超大型工程软件部署实战指南 当77GB的Vitis安装包静静躺在硬盘角落时&#xff0c;任何工程师都会意识到这将是一场硬仗。不同于常规软件安装&#xff0c;FPGA开发环境的部署更像是在操作系统中搭建另一个操作系统——它需要精确的磁盘规划、严格…...

《90%考生不知道的蓝桥杯Web提分秘籍!这本书让我一个月逆袭省一》

《90%考生不知道的蓝桥杯Web提分秘籍&#xff01;这本书让我一个月逆袭省一》 文章目录 《90%考生不知道的蓝桥杯Web提分秘籍&#xff01;这本书让我一个月逆袭省一》Part.1为什么蓝桥杯大赛能吸引百万考生&#xff1f;Part.2《Web应用开发竞赛真题实战特训教程 图解版》《程序…...

MusePublic模型解释性研究:注意力可视化分析工具开发

MusePublic模型解释性研究&#xff1a;注意力可视化分析工具开发 1. 引言 当我们看到一幅由AI生成的精美画作时&#xff0c;常常会好奇&#xff1a;模型到底是根据什么来创作这幅作品的&#xff1f;哪些部分吸引了它的注意力&#xff1f;又是如何做出每一个绘画决策的&#x…...

智能体记忆:结构化索引优化上下文效率

在之前的文章中&#xff0c;我探讨了在与AI智能体协作时&#xff0c;角色设定为何仍然重要。不同的视角能以原始上下文无法复制的方式影响输出。但我也提出了一个需要正面解决的局限&#xff1a;每一个全新的上下文窗口都是从零开始的。角色设定每次都需要从头重建对你代码库的…...

# io多路复用之select详解

一、前备知识 1、io多路复用&#xff1a;在一个线程中实现服务器与多个客户端之间的链接与信息的收发 2、select系统调用&#xff1a;select函数属于系统调用&#xff0c;每次调用都会把fd_set在用户态和内核态之间来回copy&#xff0c;所以select效率不如epoll 3、select使用&…...

风电调频翻车实录:当虚拟惯性遇上二次跌落

双馈风力电机虚拟惯性控制下垂控制三机九节点一次调频模型 [1]系统为三机九节点模型&#xff0c;所有参数已调好且可调&#xff0c;可直接运行&#xff0c;风电渗透率19.4% [2]风机采用虚拟惯性下垂控制&#xff0c;转速回复模块&#xff0c;在系统频率跌落时释放转子动能提供有…...