华为机试测试-dna-字符串
2015-09-04 14:29
330 查看
一个DNA序列由A/C/G/T四个字母的排列组合组成。G和C的比例(定义为GC-Ratio)是序列中G和C两个字母的总的出现次数除以总的字母数目(也就是序列长度)。在基因工程中,这个比例非常重要。因为高的GC-Ratio可能是基因的起始点。
给定一个很长的DNA序列,以及要求的最小子序列长度,研究人员经常会需要在其中找出GC-Ratio最高的子序列。
给定一个很长的DNA序列,以及要求的最小子序列长度,研究人员经常会需要在其中找出GC-Ratio最高的子序列。
输入 | 输入一个string型基因序列,和int型子串的长度 |
---|---|
输出 | 找出GC比例最高的字串 |
样例输入 | AACTGTGCACGACCTGA 5 |
样例输出 | GCACG |
import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner scanner=new Scanner(System.in); String dna=scanner.next(); int n=scanner.nextInt(); System.out.println(count(dna,n)); scanner.close(); } public static String count(String dna,int n) { int len=dna.length(); float maxRatio=0.0f; String maxString=null; for(int i=0;i<len-n;i++) { String s=dna.substring(i,i+n); float r=ratio(s); if(r>maxRatio) { maxRatio=r; maxString=s; } } return maxString; } public static float ratio(String s) { int len=s.length(); int cnt=0; for(int i=0;i<len;i++) { char c=s.charAt(i); if(c=='G' || c=='C') cnt++; } return cnt*1.0f/len; } }
相关文章推荐
- 黑马程序员 JAVA基础学习日记五——封装 继承 多态
- addevent()实现跨浏览器绑定事件
- Android实例-解决虚拟键盘遮挡问题(XE8+小米2)
- JAVA多线程面试
- CocoaPods的安装使用及删除(详细版)-持续更新中
- android状态选择器小技巧
- 用python的profile模块找到程序性能瓶颈
- Echarts字符云tooltip显示混乱问题的解决办法
- PAT(B) 1029. 旧键盘
- 更改Firefox为中文界面(Ubuntu系统)
- Linux下screen的使用
- C++中的智能指针
- EntityFramework之你不知道的那些事(七)
- Objective-C类,NSBundle介绍和使用
- Unique Binary Search Trees
- 减少linux服务器大量TIME_WAIT
- Hive的执行生命周期
- 【IT面经】献给正在找工作的程序员
- ios-runtime原理
- app后端开发四:GeoHash实现查找附近的X