您的位置:首页 > 编程语言 > Java开发

OJ平台——DNA序列

2014-08-03 15:32 239 查看
题目:






解体思路:

用一个变量保存一个子串长度内C/G的数量K,看下一位h跟h-i位决定K的变化,如果更大,用两个变量记录下来K的值和该字符串的起始值,一遍遍历完成后,输出起始值到后面的i个字符构成的字符串,这样算法复杂度是O(n)

PS:OJ做题,变量随便取的,还是要认真取,java代码如下

package edu.whut.yang;

import java.util.Scanner;

public class DNA {

public static void main(String[] args) {
String s=null;
int i=0;
Scanner in = new Scanner(System.in);
s=in.nextLine();
i=in.nextInt();
if(s.length()<i) return;
if(i<1) return;
int k=0;
int ratio=0;
int z=0;
for(int j=0;j<i;j++){
if(s.charAt(j)=='C'||s.charAt(j)=='G')
k++;
}
ratio=k;
for(int h=i;h<s.length();h++){
if(s.charAt(h)=='C'||s.charAt(h)=='G'){
if(s.charAt(h-i)!='C'&&s.charAt(h-i)!='G'){
k++;
}
}else{
if(s.charAt(h-i)=='C'||s.charAt(h-i)=='G'){
k--;
}
}
if(k>ratio){
ratio=k;
z=h-i+1;
}
}
System.out.print(s.substring(z, z+i));
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法 java OJ DNA序列