Algorithm 重新排列字母表,以最快的方式按词典顺序排在第一位
考虑一下,我们有一份名单,上面有两个人的名字,但没有两个人是相同的。列表的最大大小为:Algorithm 重新排列字母表,以最快的方式按词典顺序排在第一位,algorithm,data-structures,trie,alphabetical-sort,Algorithm,Data Structures,Trie,Alphabetical Sort,考虑一下,我们有一份名单,上面有两个人的名字,但没有两个人是相同的。列表的最大大小为: ha haa st 现在的目标是找出如果我们改变英文字母顺序,有多少名字(以及哪些名字!)可以在字典顺序中排在第一位! 例如,如果列表为: ha haa st 然后通过改变字母表,我们可以把ha和st放在第一位,但无论我们如何改变它,haa总是排在ha之后,所以两个名字可以排在第一位 当然,有一个蛮力的方式来找出答案,但需要检查所有26!每个单词可能的字母顺序!由于这个问题的时间限制是1秒,因此我认为使
ha haa st
现在的目标是找出如果我们改变英文字母顺序,有多少名字(以及哪些名字!)可以在字典顺序中排在第一位!
例如,如果列表为:
ha haa st
然后通过改变字母表,我们可以把ha和st放在第一位,但无论我们如何改变它,haa总是排在ha之后,所以两个名字可以排在第一位
当然,有一个蛮力的方式来找出答案,但需要检查所有26!每个单词可能的字母顺序!由于这个问题的时间限制是1秒,因此我认为使用O(nlogn)或更低的算法就可以找到。然而,我不知道如何解决这个问题。我认为使用trie会有帮助(因为我在学习数据结构时遇到了这个问题!),但图形算法也可能有帮助
我如何找到解决这个问题的正确算法和方法,以及如何在代码中实现它?让
w
成为第一个词
L
作为上述候选词。根据初始公式,所有名称都不同,因此L
也由唯一的名称组成L
中唯一的名称是解决方案。L
中的任何名称都是解决方案。您的问题的答案是L
的大小
tldr:计算所有长度的单词(
w
)我们对家庭作业问题的期望也适用于此类挑战问题。简单地把问题陈述放在我们身上,而不做任何演示,并要求解决,对于堆栈溢出来说是离题的。@Prune-well我不知道该怎么做。我很确定我应该用trie做这份工作,但我在网上找不到任何帮助。当一个人不知道该做什么,也没有人帮助他时,他应该做什么?根据我们的经验,教育者不会设置学生没有希望解决的问题。因此,很可能你的一堂课或你的一套教材会给出答案,并且你已经被教授了相关的材料。你可能会在评论中得到提示,但你可能会发现去复习课或咨询你的课程主管更有用。trie会让你消除上面的haa
,但不会让你消除ahh
中的ahh
@FarzinNasiri怎么办?可能会发布到开放式帮助站点,而不是StackOverflow。不过,首先,我会联系你们班的人力资源部(讲师、导师等),以获得问题分析和适当解决方法方面更广泛的帮助。“我不知道如何解决这个问题”不是堆栈溢出问题。