String 词典排序O(m)

String 词典排序O(m),string,algorithm,sorting,tree,lexicographic,String,Algorithm,Sorting,Tree,Lexicographic,假设我们有n个字符串(英语中为26个)。字符串的长度是l1,l2,l3。。。ln>=1。设m=sum(l1,l2,l3,…,ln)。如何在时间O(m)中对字符串进行字典式图形排序 关于algos的思考: 备选案文1: 创建一个BST,我们通过比较单词的字母插入单词,然后让最左边的字母按字母顺序排列,最右边的字母按字母顺序排列,最后一个 备选案文2: 基数排序,我们有从“A”到“Z”的桶。。。我认为如果MSB基数排序从第一个字母开始,然后填充每个字符串,直到最长的字母可能不是O(最长字符串长度)

假设我们有n个字符串(英语中为26个)。字符串的长度是l1,l2,l3。。。ln>=1。设m=sum(l1,l2,l3,…,ln)。如何在时间O(m)中对字符串进行字典式图形排序

关于algos的思考: 备选案文1: 创建一个BST,我们通过比较单词的字母插入单词,然后让最左边的字母按字母顺序排列,最右边的字母按字母顺序排列,最后一个

备选案文2: 基数排序,我们有从“A”到“Z”的桶。。。我认为如果MSB基数排序从第一个字母开始,然后填充每个字符串,直到最长的字母可能不是O(最长字符串长度)

备选案文3: 我认为尝试是一件事,但不确定它们的时间复杂性是否适用于此


要获得最佳标记,请从上述3个选项中选择一个,并解释它为什么有效,而其他选项不起作用~或者包含一个指向一个好算法的链接,或者提供关于如何设计在此时间限制下工作的算法的答案~最简单的方法是进行最重要的字符优先基数排序

当某些字符串变得太短,无法包含正在排序的数字时,将它们移动到当前区域的前面,并将其忽略,这样它们将位于以它们为前缀的所有较长字符串之前


每个字符串的每个字符都被视为O(1)次,这导致总共O(总和(长度))(假设每个长度>=1)

好的,基本上是选项2。只要1个qq,Trie就能工作吗?是的,Trie也能工作。创建trie并执行DFS,打印路径。它将再次成为
O(m)
解决方案。