我有两个字符数组。它们看起来像这样:
1) S ( J D )
2) S J Z D
第二个数组总是与第一个不同。它没有任何括号,并且有 +/- 1 个字母字符,或者只是交换了两个字符的位置。我基本上需要将两个数组合并在一起,这样我就有了第二个数组的字符,但保留了第一个数组的括号。(如果您查看下面的测试用例,它更容易理解)
在上面的例子中,输出应该是:
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)