同构词

时间:2016-04-30 19:39:23

标签: java file hashmap

采访问题 - 基于地图的设计,用于实现代码以检查文件中的同构词。有效的方法。

Two words are called isomorphic if the letters in one word can be remapped to get the second word.

如果有n个单词,那么我能想到的最好的方法是O(n ^ 2 log n)时间复杂度(n个单词 - 排序单词 - n log n - 并存储在散列图中 - 空间复杂度O(n ))。

如果文件很大,那么我们一次可以加载一半。

2 个答案:

答案 0 :(得分:1)

您可以将每个字母映射到素数,取出每个单词并查找其字母的乘积,然后检查哪些单词构成相同的分解。

这需要每个字母1次乘法,每个单词1次插入到产品图中。

答案 1 :(得分:1)

我们遍历文件,并使用计数排序对每个单词中的字符进行排序,然后将排序后的单词插入到set中。总复杂度:O(26 * n)~O(n)。