2

さて、私は2つの文字列を比較して、一致するかどうかを文字ごとにチェックし、「-」にヒットした場合は、連続する「-」の数を数え、それらが1文字のみであるかのようにグループに入れる必要があります。この「-」のグループに T と C がいくつあるか数えてください。出力は 2.1T と 2.2C、もう 1 つは 5.2C のようになります。

    String dna1 = "TC---CA--";  
    String dna2 = "TCTCCCACC";
    char[] dnaChar = dna1.toCharArray(), dna2Char = dna2.toCharArray();
    int cont = 0;
    int letters = 0;


    for (int i = 0; i < dnaChar.length; i++) {
        if (dnaChar[i] != dna2Char[i]) {
            int mut = i + 1;

            if (dna1.charAt(i) == '-') {

                cont++;
                mut -= cont;
                if (dna2.charAt(i) == 'C') {
                    letters++;
                }

                System.out.println(mut + "." + letters + dna2.charAt(i));
            } else {
                letters = 0;
                cont = 0;
                mut += 1;
                System.out.println("" + dna1.charAt(i) + " " + mut + " " + dna2.charAt(i));
            }
        }
    }

出力 2.0T 2.1C 2.2C 4.3C 4.4C そして、私が欲しいもの 2.1T 2.2C 5.2C

4

1 に答える 1

3

あなたが期待する出力は、上記のコードから決して得られません..最初の文字列で「-」に遭遇するたびにif構造が実行されるため..したがって、3つではなく5つの出力が得られます..

次に、必要なものを取得するには、ここで追加の作業を行う必要があります..

  • まず、最初の文字列で「-」が発生した場合、2 番目の文字列から対応する文字を変数に格納する必要があります。連続する文字をチェックするために必要だからです。
  • 次に、'-' を取得するたびに、直前の '-' に一致する最後の文字で現在の文字を確認します。同じならカウントを1増やして、
  • 同じでない場合は、必要なものを印刷して、カウントを0にリセットしてください
  • 最初の文字列で「-」以外の文字に遭遇したらすぐに、現在の文字とカウント値を出力し、それらをリセットします..

私が言及した手順に従ってコーディングを試みることができます..

*PS: - コードで問題が発生した場合は、最初にそれを解決するために従うべき手順を紙に書き留めてください。次に、それを段階的にコードに変換します。問題を理解し、それを解決することも容易になります..

于 2012-09-22T21:05:37.337 に答える