嗨,我正在尝试用java做一些练习,我发现了一些困难。我的代码:
导入 java.util.regex.; 导入java.util.;
public class MyPracticeString {
public static void main(String[] args) {
String dnaSequence;
Scanner in=new Scanner(System.in);
System.out.println("Please input a Sequence of DNA: ");
String dnaInput=in.nextLine();
if (dnaInput.matches("[ATCG]+$")) {
dnaSequence=dnaInput;
int [] count=new int[4];
if (dnaSequence!=null) {
for (int i=0; i<dnaSequence.length(); i++) {
switch(dnaSequence.charAt(i)) {
case 'A':
count[0]++;
break;
case 'T':
count[1]++;
break;
case 'C':
count[2]++;
break;
case 'G':
count[3]++;
break;
default:
System.out.println("Sorry You have invalid Type DNA sequence");
}
}
System.out.println("Now : A"+count[0]);
System.out.println("Now : T"+count[1]);
System.out.println("Now : C"+count[2]);
System.out.println("Now : G"+count[3]);
/*
Pattern p=Pattern.compile("A");
Matcher m=p.matcher(dnaSequence);
int j=0;
while(m.find())
j++;
System.out.println(j);
*/
}
} else {
System.out.println("THE SEQUENCE SHOULD BE CONTAIN ATCG");
}
}
}
假设我的输入 AAATATTTTGGGCC ,现在我如何将其压缩为 A3TAT4G3C2 ,我应该遵循的过程是什么 以及我如何再次解压它。就像我如何再次获得这个 AATATTTTGGGCC
最佳答案
您实现自己的解压缩。
import java.util.Scanner;
public class CompressDecompress {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
System.out.println("Please input a Sequence of DNA: ");
String dnaInput=in.nextLine();
System.out.println("Enter E for encrypt or Enter D for decrypt");
String function=in.nextLine();
if("E".equalsIgnoreCase(function)){
System.out.println(compress(dnaInput) );
}else if("D".equalsIgnoreCase(function)){
System.out.println(deCompress(dnaInput) );
}else{
System.out.println("Invalid Input");
}
}
private static String compress(String toCompress){
StringBuilder compressedSB = new StringBuilder();
char tempChar=' ';
for (int i=0,counter=1;i<toCompress.length();i++){
if(tempChar!=toCompress.charAt(i)){
tempChar=toCompress.charAt(i);
compressedSB.append(tempChar);
if(counter>1){
compressedSB.append(counter);
counter=1;
}
}else{
counter++;
}
if (i==toCompress.length()-1){
compressedSB.append(counter);
}
}
return compressedSB.toString();
}
private static String deCompress(String toDeCompress){
return null;
}
}
当然,使用正则表达式或 CASE 添加“ATCG”验证
关于java - 我如何替换java中的字符串来重写序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26351882/