0

假设我有一个 char {A,B,C,D,E,F} 数组,订单号为 3

然后,加扰的词如下:

第 3 个(订单号)字符 C 被删除并保存。

{A,B,D,E,F} , {C}

从下一个字符 D 开始,第一个第三个字符是 F。因此,F 被删除并保存。

{A,B,D,E} , {C,F}

从下一个字符开始(因为它到达数组索引的末尾,我们回到开头)。所以从字符 A 开始,第一个第三个字符是 D。

{A,B,E} , {C,F,D}

等等。

结果将是一个空的原始字符数组,以及加扰的数组

{ } , {C,F,D,B,E,A}

上述算法很容易实现。我对此没有任何问题。我确实有问题是解读它。我得到了一些未加扰的 char 数组及其排序,我必须找到它的原始 char 数组。

我已经尝试了几个小时,但我似乎无法找到它的“公式”。我猜我错过了一些关键的东西。谁能给我一个关于如何解决这个问题的线索或提示?

4

1 回答 1

0
  1. 使“地图字符串”的长度与原始字符串相同,但所有字母都按顺序排列,例如“ABCDEFGH..”

  2. 根据给定的顺序打乱它

  3. 现在,同时遍历您的问题字符串和地图字符串。对于问题字符串中的每个字符,映射字符串字符会说明放置位置。如果你有 map="SQEG..." 和 question="DSEG...",那么'D' 进入'S' 位置,'S' 进入'Q' 位置,等等。

而已。如果您愿意,或者您的问题字符串太长,请使用整数数组而不是字符串作为映射。

于 2017-02-27T12:59:16.803 回答