回文序列(水题,字符串操作)
回文序列
遗传学上讲的回文序列指的是双链DNA或RNA分子中的特定的核苷酸片段,该片段在其中一条链上按5’到3’读取的序列与其互补链上按相同的5’到3’读取的序列一致。回文序列能够形成发夹。
回文序列广泛存在于各种生物体基因组中,主要和转录终止有关,也是限制性内切酶酶切位点,还参与DNA复制等生命活动。
回文序列在分子生物学中起着重要的作用。许多限制性内切酶能识别特定的回文序列并切割它们。比如,限制性内切酶EcoR1识别以下回文序列:
5’- G A A T T C -3’
3’- C T T A A G -5’
给出你一段脱氧核苷酸单链碱基序列,输出该序列最长回文子序列的互补链序列。
Input
输入数据有多组,第一行是一个正整数T,(0<T<100),代表有T组数据,每组测试数据包含一条单链脱氧核苷酸碱基序列S,(S是一个长度不超过100的字符串,且S仅由大写字母“A,G,C,T”组成)
Output
找出该脱氧核苷酸碱基序列的最长回文子序列,并输出最长回文序列的互补碱基序列(保证最长回文序列长度大于等于2,若存在相同长度的回文序列,输出更靠前的那一个)
Sample Intput
3
GAATTC
GATCCGTA
ATGCATGCGCGC
Sample Output
CTTAAG
CTAG
TACGTA
思路:
由于碱基配对的特殊性,满足要求的序列长度一定为偶数。遍历整个字符串,枚举任意相邻两位并且满足回文要求的序列为回文序列的中心,然后以此为中心,每次左右同时增添一位,直到不满足回文序列要求为止,记录这个序列的初始位置和下标。遍历所有位置,比较得出最长回文序列的起始位置下标和序列长度,最后输出该序列的碱基互补序列。
代码:
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
char s[110],b[110];
int t,maxx,locate;
int main()
{scanf("%d",&t);while(t--){maxx=0;scanf("%s",s);int l=strlen(s);for(int i=0; i<l; i++){if(s[i]=='A') b[i]='T';if(s[i]=='G') b[i]='C';if(s[i]=='C') b[i]='G';if(s[i]=='T') b[i]='A';}for(int i=1; i<l; i++)for(int k=i-1,j=i; k>=0&&s[k]==b[j]&&s[j]==b[k]; k--,j++)if((i-k)*2>maxx){maxx=(i-k)*2;locate=k;}for(int i=locate; i<locate+maxx; i++)printf("%c",b[i]);printf("\n");}return 0;
}
回文序列(水题,字符串操作)相关推荐
- Coderforces 字符串水题合集
今天我们聊聊 Coderforces 字符串水题合集. 字符串就是string. 这是string的百度翻译,我们要谈的是画框的.↓ string是C++.java.VB等编程语言中的字符串,字符串是 ...
- 1001 字符串“水”题(二进制,map,哈希)
1001: 字符串"水"题 时间限制: 1 Sec 内存限制: 128 MB 提交: 210 解决: 39 [提交][状态][讨论版] 题目描述 给出一个长度为 n 的字符串( ...
- 【牛客 - 289 I】这是一个沙雕题I (字符串问题,水题)
题干: 因为毒瘤出题人出的题都太难了,于是gugugu打算出一个签到题,(就是这题啦),这题很简单,给定一个字符串,请问你重新排序后能不能组成K个相同的字符串. 输入描述: 多组数据输入,第一行输入k ...
- 【CodeForces - 289C】Polo the Penguin and Strings (水题,字符串,思维构造,有坑)
题干: Little penguin Polo adores strings. But most of all he adores strings of length n. One day he wa ...
- 字符串水题——相对分子质量
问题 G: 相对分子质量 时间限制: 1 Sec 内存限制: 32 MB 提交: 5 解决: 5 [提交][状态][讨论版] 题目描述 小明最近迷上了化学,几乎天天在实验室做实验,但是很多实验生成 ...
- [双指针] aw3333. K-优字符串(双指针+水题)
文章目录 1. 题目来源 2. 题目解析 1. 题目来源 链接:3333. K-优字符串 2. 题目解析 双指针水题. 可发现首尾对应位置均独立,且得分可以任意变换.故仅需统计初始得分 sum,最小操 ...
- fzu 2088 最长队名(字符串普通模拟,大大的水题)
Description Jack所在的班级决定组团报名参加FZU校赛.为了体现班级的团结和睦,班长决定用班级所有人的名字连起来组成一个史上最长最醒目的队名. 因为听说在分数相同的情况下,队名字典序小的 ...
- Codeforces数据结构(水题)小结
最近在使用codeblock,所以就先刷一些水题上上手 使用codeblock遇到的问题 1.无法进行编译-------从setting中的编译器设置中配置编译器 2.建立cpp后无法调试------ ...
- 图论刷水题记录(二)(最短路-----SPFA算法)
继第一篇的后续,又来刷水题了,写的是SPFA算法,这个算法的复杂度比较玄学,感觉能不用就不用了,但是他的好处就是可以判断负圈. 3月26日: 1.POJ 1847 Tram 题意:在一个交通网络上有N ...
- 图论刷水题记录(一)(最短路-----dijkstra算法)
最近实在不知道干些什么,感觉自己除了水题什么都不会做,算了去刷一刷图论的水题吧本来想合起来一起发,想了想太长的话以后看起来也不方便,题目所以今天晚上就先发了dij部分,由上到下由易变难. 1.POJ ...
最新文章
- 在raspberry的jessie版系统上安装opencv3.0
- 电子狗显示连接不上服务器,大家觉得我这样做得对吗?行车记录仪新名词:云狗...
- Hibernate二级缓存与查询缓存的组合探究
- RabbitMQ安装遇到的问题及解决记录
- oracle data guard闪回,官方文档上的这段关于 DATAGUARD 闪回的解释,如何理解?
- 代码质量评判标准、设计模式、面向对象设计原则速查表
- 手写注解实现SpringMVC
- 50个实用的JavaScript工具
- IPv4地址何去何从 IPv6不向下兼容的尴尬
- html5swf小游戏源码,FLASH打方块小游戏及as3代码
- MySQL入门教程:SQL语言入门
- nbu备份脚本 linux,NBU60网络备份大全之Linux设备管理(参考Word)
- Linux的进程调度算法简介
- 深度应用驱动的医学知识图谱构建(一)
- .net core6 简单控制台读取数据库操作封装
- Excel 绘制 人口年龄结构树状图
- 2022G2电站锅炉司炉考试模拟100题及模拟考试
- EXCEL公式-文本型数据转换为数值型数据
- NFA转DFA与DFA简化
- vuejs 配置路由