java - 我如何替换java中的字符串来重写序列

标签 java string

嗨,我正在尝试用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/

相关文章:

java - 一个将继续运行的线程?

Java 将终端/命令行添加到 Eclipse 控制台

.net - PowerShell 数组只是 .NET 数组吗?

javascript - 从切片方法返回剩余的整个文本

PHP 字符串 "contains"

Python - 打印错误消息指向的行

Javascript 底层 toString 转换

java - 字符串, 拆分.需要帮助理解

java - 有没有办法复合拦截器

java - 从外部 jar 加载 @Singleton Bean