采访问题 - 基于地图的设计,用于实现代码以检查文件中的同构词。有效的方法。
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 ))。
如果文件很大,那么我们一次可以加载一半。
答案 0 :(得分:1)
您可以将每个字母映射到素数,取出每个单词并查找其字母的乘积,然后检查哪些单词构成相同的分解。
这需要每个字母1次乘法,每个单词1次插入到产品图中。
答案 1 :(得分:1)
我们遍历文件,并使用计数排序对每个单词中的字符进行排序,然后将排序后的单词插入到set中。总复杂度:O(26 * n)~O(n)。