【发布时间】:2012-01-22 06:15:20
【问题描述】:
给定一个字符串数组,返回所有的字谜字符串组。
我的解决方案:
对数组中的每个字符串单词,排序O(m lg m),m是单词的平均长度。
建立一个哈希表
将排序好的单词作为key放入哈希表,同时生成单词的所有排列(O(m!)),用O(m)在字典(前缀树映射)中搜索每个排列,如果是在字典中,将它(O(1))放入哈希表中,以便所有排列后的单词都放入具有相同键的列表中。
总共 O(n * m * lg m * m!) 时间和 O(n* m!) 空间,n 是给定数组的大小。
如果 m 很大,则效率不高,m! .
有更好的解决方案吗?
谢谢
【问题讨论】:
标签: c++ algorithm data-structures anagram