反向向前移动

时间:2019-01-12 20:54:42

标签: algorithm

给定:A-> L-> G-> O-> R-> I-> T-> H-> M-> U-> S

现在我必须给出最短的序列,该序列使用Move-To-Fron给我:

G-> L-> A-> M-> O-> R-> H-> I-> T-> U-> S

结果是:H,R,O,M,A,L,G

我可能会猜到,但是我只是缺乏系统的方法来解决这个问题。如果有人可以向我展示适当的流程,那就太好了。

1 个答案:

答案 0 :(得分:2)

一切都只移到最前面。这意味着G必须最后移动。将G推入堆栈,然后忘记它。

结果字符串为ALORITHMUSLAMORHITUS

对于他们来说,L必须最后移动。将其推入堆栈,然后忘记它。现在您有了AORITHMUSAMORHITUS

漂洗并重复,直到其余的字符串比较相等(不再需要移动)。最后的堆栈按正确的顺序包含结果。

比较时要小心。天真的实现会导致二次时间复杂度。有一种避免它的方法。