2010-09-04 52 views
-1

問題說明: 給出一組k字符串,每個字符串長度爲n。您必須將這組字符輸出到一起。 Anagrams就像是atm - mat,就像kile。將所有字典組合在一起

+3

而你的問題是......或者你的屏幕名稱表明你想如何得到答案? :) – 2010-09-04 15:16:51

+1

參考這個http://stackoverflow.com/questions/396005/word-anagram-hashing-algorithm – aeh 2010-09-04 16:29:04

+3

順便說一句,作業或面試的問題?如果你的標籤適當,你總是可以讓其他人更容易地提供最相關的幫助,包括form和_ content_) – 2010-09-04 18:32:00

回答

5

只需對單詞的字母進行排序即可獲得符合特定字符的簽名。例如,在Python,

sig = ''.join(sorted(word)) 

,並作出dictsig爲重點,並且與該簽名單詞列表(defaultdict(list)可以很好地用於本)的值。當然,你可以用任何具有排序能力的語言來完成它,而關聯數組的值可以是列表或向量;-)。

+0

In C#: 'myStrings.ToLookup(str => new string(str.OrderBy(c => c).ToArray()));' – Ani 2010-09-04 15:42:02

+0

@Alex:使用所有這些排序技術將佔用更多空間和時間複雜性。有沒有優雅的解決方案,並不需要將它們整理出來,然後將每一個與其他所有的相匹配。 – 2010-09-04 15:47:02

+0

排序是優雅 – 2010-09-04 16:34:03