给出一系列单词,将字谜分组 IP:{焦油,大鼠,香蕉,ATR} OP:{[焦油,大鼠,ATR],[香蕉]}
使用哈希表的这个问题的一个解决方案。考虑每个单词,对其进行排序,如果不存在则添加为哈希表的关键字。密钥的值将是具有相同密钥的所有字谜的列表。我想知道时间的复杂性,要对数组中的字符进行排序,假设O(n log n)要存储在哈希表中,它将是O(n),总共为O(n * nlogn)。
有更好的算法吗?时间复杂度较低?
答案 0 :(得分:1)
出于时间复杂性的考虑,您可以随时使用计数排序对单个单词进行排序,每个单词的成本仅为线性时间。您还可以先计算字母的出现次数,然后对出现次数进行哈希处理,而不是排序的单词,这与计算排序减去重建步骤基本相同。
但由于这些词语通常很短,这可能不会给你带来任何实际好处。