英语有26个字符(a,b,c,d,...,z),它们的顺序为b behind a
,c behind b
等。
假设我们有另一种语言。在语言中,我们也有很多字符。所有的人都有订单,就像英语中的字符一样。
但是,我们还不知道所有字符的总顺序。
我们给出了一个单词列表,在每个单词中,字符已经被排序。
请使用数据结构和算法来导入所有字符的总顺序。
例如,
我们有字符@
,£
,$
,%
。我们不知道这些语言的顺序。
我们获得了一个单词列表
£ %
@ %
$ @
£ $
然后我们可以获得总订单£ $ @ %
。
答案 0 :(得分:1)
构造一个包含所有字符作为顶点的有向图。
在每个字符中为每个字符创建一条边,直接跟在任何单词中的该字符之后。例如,如果您有一个单词@ % ^
,则您有边@ -> %
和% -> ^
。
在图表上运行topological sort以获得正确的订单。