这个解法主要引子一篇博客的解答,我只是实现,方法引于:http://blog.youkuaiyun.com/yahohi/article/details/7985328。我实现了第二种方法。
解法一:
使用hash_map和链表。
首先定义一个key,使得兄弟单词有相同的key,不是兄弟的单词有不同的key。例如,将单词按字母从小到大重新排序后作为其key,比如bad的key为abd,good的key为dgoo。
使用链表将所有兄弟单词串在一起,hash_map的key为单词的key,value为链表的起始地址。
开始时,先遍历字典,将每个单词都按照key加入到对应的链表当中。当需要找兄弟单词时,只需求取这个单词的key,然后到hash_map中找到对应的链表即可。
这样创建hash_map时时间复杂度为O(n),查找兄弟单词时时间复杂度是O(1)。
寻找英文单词的兄弟单词:数据结构与查询优化

本文介绍如何通过数据结构优化,找到英文单词的兄弟单词,即字母顺序交换后形成的单词。两种解法分别利用hash_map和链表,通过排序字母或质数相乘作为key,实现O(n)的构建复杂度和O(1)的查询效率。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



