【问题标题】:How do I unscramble a scrambled word?我如何解读一个打乱的单词?
【发布时间】:2017-07-18 00:25:25
【问题描述】:

假设我有一个 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 数组。

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

【问题讨论】:

  • 你知道大小,所以...... 然后把C 放在第三个位置,所以..C... 然后你知道F 是右边3 个C 所以..C..F 然后D3 右边的 F 所以你最终在 C (使用你有的数组结束规则)并且因为该点被占用,所以使用下一个点等等
  • (去掉java标签,本题没有java)
  • 这是一个例子.. 以你自己的例子为基础,如果这让事情变得清楚:“然后把 C 放在第三个位置”应该是“然后把加扰数组的第一个字符放在 @987654331 @-th 位置"
  • 知道了。不小心删除而不是编辑我的评论。现在有道理了!非常感谢

标签: arrays algorithm scramble


【解决方案1】:
  1. 使“映射字符串”的长度与原始字符串相同,但所有字母都按顺序排列,例如“ABCDEFGH..”

  2. 按照给定的顺序打乱它

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

就是这样。如果您愿意,或者您的问题字符串太长,请使用整数数组而不是地图字符串。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-05
    • 2012-01-27
    • 2011-10-21
    • 1970-01-01
    • 2016-03-17
    • 2017-09-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多