【发布时间】:2012-05-05 11:01:45
【问题描述】:
我在一次采访中被问到这个问题。假设你有一个有序的字典,并且给定了一个无序字符列表——你将如何按优先顺序排列这些字符?该词典包含保证出现所有 26 个字符的单词。但是,请注意字典的大小可能是任何值。字典可能只有几个单词,并且每个字符可能没有单独的部分,例如,可能没有以 a 开头的单词的部分;尽管a 将作为另一个单词的一部分出现,例如“bat”。
字典可能是“有序的”(/sarcasm),例如“zebra”、“apple”、“cat”、“crass”,如果给定列表 {a, z, @ 987654325@},正确的顺序是{@987654326@,a,r}。由于字典中“zebra”在“apple”之前,我们知道z在a之前。因为“apple”在“cat”之前,我们知道a在c之前。因为“cat”在“crass”之前,我们知道a在r之前。这个排序留下c和r 存在不确定性,但由于字母列表是 {a, z, r},我们知道解决方案是 {z, a, r}。
【问题讨论】:
-
给定一个字典,其中一些单词共享前缀,可能会得出正确的顺序(
"cat", "car"可以看到t < r)。但是,给出的示例并非如此;我看不出他们从哪里得到了“r”的顺序。 -
@Emil 谢谢。我更新了这个例子,也许它更有意义。无论如何,我承认 - 这是一个非常奇怪的问题。
-
我没有解决方案,但我有一个想法:从字典中,形成一个已知优先规则的列表。在给定的示例中,它们将是
z<a, z<c, a<c, a<r。 (可选)添加z<r,因为优先级是可传递的。通过假设“X -
在您的问题陈述中,您应该包含一个测试用例,其中字母不是以字符开头并显示它是如何处理的。
-
问题陈述中的测试用例确实包含一个没有单词开头的字母:
r。除非你的意思是一个我们找到的字母都不是以开头的词,比如“猫”?