私は文字の2つの配列を持っています。それらは次のようになります。
1) S ( J D )
2) S J Z D
2 番目の配列は常に最初の配列とは異なります。括弧はなく、+/- 1 文字の英字を使用するか、2 文字の位置を入れ替えるだけです。基本的に、2 番目の配列の文字が含まれるように、2 つの配列を一緒にマージする必要がありますが、最初の配列の括弧は維持します。(以下のテストケースを見ると理解しやすい)
上記の例では、出力は次のようになります。
S (J Z D)
私はこれを行う方法がよくわかりません。私がこれまでいじっていたこと:
各配列のアルファ文字を数えて、加算、減算、または交換しているかどうかを確認できます。
加算の場合、配列 #1 のコピーを作成できますが、括弧は使用しません (つまり、配列 #3)。この配列を配列 #2 と比較し、最初の違いを見つけます。インデックスに注意してください。次に、そのインデックスに到達するまで #1 を繰り返します (括弧ごとに 1 を引きます)。次に、#2 の文字を配列にコピーします。
減算の場合は、加算と同じことを行います。違いが見つかった場合にのみ、リスト #1 から削除します。
これを処理するためのより良い方法を考えられる人はいますか?
テストケース:
Input
Array1: A (G F)
Array2: A G D F
Output
A (G D F)
Input
Array1: A (G F)
Array2: A G F D
Output
A (G F) D
Input
Array1: A (G F)
Array2: A D G F
Output
A D (G F)
Input
Array1: A (G F)
Array2: A F
Output
Input
Array1: A (G F)
Array2: G F
Output
(G F)
Input
Array1: A (G F)
Array2: A F G
Output
A (F G)