Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 重新排列字母表,以最快的方式按词典顺序排在第一位_Algorithm_Data Structures_Trie_Alphabetical Sort - Fatal编程技术网

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
成为第一个词

  • 如果我们改变字母表中的字母,第一个单词将保持其长度。任何可以排在第一位的名字都必须是长…长(w)

  • L
    作为上述候选词。根据初始公式,所有名称都不同,因此
    L
    也由唯一的名称组成

  • L
    中唯一的名称是解决方案。
    L
    中的任何名称都是解决方案。您的问题的答案是
    L
    的大小



    tldr:计算所有长度的单词(
    w

    我们对家庭作业问题的期望也适用于此类挑战问题。简单地把问题陈述放在我们身上,而不做任何演示,并要求解决,对于堆栈溢出来说是离题的。@Prune-well我不知道该怎么做。我很确定我应该用trie做这份工作,但我在网上找不到任何帮助。当一个人不知道该做什么,也没有人帮助他时,他应该做什么?根据我们的经验,教育者不会设置学生没有希望解决的问题。因此,很可能你的一堂课或你的一套教材会给出答案,并且你已经被教授了相关的材料。你可能会在评论中得到提示,但你可能会发现去复习课或咨询你的课程主管更有用。trie会让你消除上面的
    haa
    ,但不会让你消除
    ahh
    中的
    ahh
    @FarzinNasiri怎么办?可能会发布到开放式帮助站点,而不是StackOverflow。不过,首先,我会联系你们班的人力资源部(讲师、导师等),以获得问题分析和适当解决方法方面更广泛的帮助。“我不知道如何解决这个问题”不是堆栈溢出问题。