2013-01-02 67 views
2

我的朋友在他的訪談中被問到了一些問題。使用集合生成子串

如何找到給定字符串的所有可能的子字符串? 我知道這可以使用許多技術來解決,但後來給了他一個暗示,那就是使用它。

我無法弄清楚如何使用集合。有人可以澄清一下嗎?

+1

是應該是時間或空間效率? – Woot4Moo

+2

設置確保唯一性.. –

+0

有沒有更多的時間或空間被詢問的細節 – apgp88

回答

3

根據定義,集合只包含元素的一個副本。使用集合來解決這個問題將消除在輸出集合中包含重複子字符串的可能性。

比方說,你遍歷字符串:

aabbaa 

尋找長度爲二子,並將其添加到一組,當您去。

你會發現:

aa 
ab 
bb 
ba 
aa 

第一和最後一項是重複的,所以一個將被丟棄。

+0

我明白了。類似的可以通過將輸出字符串放在hashmap中來完成,對嗎? – apgp88

+0

@AmolPatil HashMap(至少在Java中,我不確定其他語言)使用鍵值對來存儲數據。我認爲這不是對這個問題的明智的數據結構選擇。你可以使用每個子字符串作爲鍵和值,但這將是一種奇怪的做事方式。 –

+0

HashSet(使用Java)的實現實際上是創建一個HashMap ,其中集合中的所有關鍵字映射到同一個虛擬對象,所以是的,你可以直接使用HashMap(但它會更笨拙)。 – James