如何找出字典中的兄弟單詞

2021-08-31 03:19:08 字數 434 閱讀 5274

給定乙個單詞a,如果通過交換單詞中字母的順序可以得到另外的單詞b,那麼定義b是a的兄弟單詞。現在給定乙個字典,使用者輸入乙個單詞,如何根據字典找出這個單詞有多少個兄弟單詞?

答案: 

使用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)。

**:

如何找出字典中的兄弟單詞

思路一 使用trie樹。在字典樹的字首中再儲存乙個vector結構的容器 cpp struct word 如上述資料結構所示,字典樹的建立是在預處理階段完成的,首先根據字典中的單詞來建立字典樹,建立的時候,需要稍微特殊處理一下,就是比如pots stop和tops互為兄弟單詞,那麼在字典中按照首字母...

如何找出字典中的兄弟單詞

思路一 使用trie樹。在字典樹的字首中再儲存乙個vector結構的容器 cpp struct word 如上述資料結構所示,字典樹的建立是在預處理階段完成的,首先根據字典中的單詞來建立字典樹,建立的時候,需要稍微特殊處理一下,就是比如pots stop和tops互為兄弟單詞,那麼在字典中按照首字母...

找出字典中最小value值對應的key

今天做乙個練習題,遇到乙個問題,就是找字典中最小value值對應的key,1.我自己寫了一段,就是利用min函式先找到最小value,然後遍歷字典一遍找對應的key值。d minkeylst minvalue min d.values for i,j in d.items if j minvalue...