您的位置:首页 > 其它

Trie树兄弟单词实例

2015-08-03 16:29 344 查看

Trie树趣味实例

如果一个单词,将其字母顺序重新排列可以生成另一个单词,则称这两个单词是兄弟单词。

如:”mary“ & ”army“

“cinema”&“iceman”

现在给定一个字典,用户输入一个单词,如何根据字典找出这个单词有哪些兄弟单词?要求时间和空间效率尽可能的高。

解决思路:

利用Trie树就可以妥善解决。

只需将上面的树节点增加一个vector< string >,构建树的时候,将每个单词在插入树之前先按字母序排序,如插入mary,先将mary变为:amry然后插入Trie树中,在到达最后一个字母节点时,在节点中的vector中存入mary即可。同理,如果插入army,也先将它排序变为amry,然后插入树中,到达最后一个字母节点时(和mary同一节点),将army也添加进vector中即可。

当用户查询单词时,先将用户输入的单词按字母序重排,然后查找Trie树,到达最后一个字母节点时只需变量vector并打印出所有的单词即可。

(当然还有其他方法,如hash_map等)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: