【发布时间】:2019-11-22 20:51:49
【问题描述】:
假设我们有一个人名列表,其中没有两个是相同的。列表的最大大小为:
现在的目标是找出如果我们改变英文字母顺序,有多少名字(以及哪些名字!)可以在字典顺序中排在第一位! 例如,如果列表是:
ha haa st然后通过更改字母表,我们可以将 ha 和 st 放在首位,但无论我们如何更改它 haa 总是会排在后面哈哈,所以两个名字可以在前。
当然有一种蛮力的方法可以找出答案,但需要检查所有 26 个!每个单词可能的字母顺序!由于这个问题的时间限制是 1 秒,所以我认为 O(nlogn) 或更低的算法会找到。但是我不知道如何解决这个问题。我认为使用 trie 会有所帮助(因为我在学习数据结构时遇到了这个问题!)但可能图算法也可以提供帮助。
我怎样才能找到解决这个问题的正确算法和方法以及如何在代码中实现它?
【问题讨论】:
-
我们对家庭作业问题的期望也适用于此类挑战问题。简单地把问题陈述丢给我们,没有任何努力,并寻求解决方案,这对于 Stack Overflow 来说是无关紧要的。
-
@Prune 好吧,我不知道该怎么办。我很确定我应该使用 trie 来完成这项工作,但我在互联网上找不到任何帮助。当一个人不知道该怎么做并且没有人帮忙时该怎么办?
-
通常我们的经验是,教育工作者不会设置学生没有希望解决的问题。因此,您的一堂课或您的一套课文很可能会给出答案,并且您已经学习了相关材料。您可能会在 cmets 中得到提示,但您可能会发现参加复习会议或咨询您的课程主管会更有用。
-
trie 可以让你消除上面的
haa,但不会让你从aha hah ahh中消除ahh。 -
@FarzinNasiri 做什么?也许发布到一个开放式帮助站点,而不是 StackOverflow。不过,首先,我会联系您班级的人力资源(讲师、导师等),以寻求在问题分析和适当解决技术方面的更广泛帮助。 “我不知道如何解决”不是 Stack Overflow 问题。
标签: algorithm data-structures trie alphabetical-sort