2013-10-27 75 views
1

我想比較兩個數組數組(無重複),以查找長度爲2或更大的所有子數組,這兩個數組都出現在兩個原始數組中。比較數組找到所有匹配的子數組

我正在尋找最有效的方式來實現這一點。

+0

字符串有多大,可能字符的範圍有多大? – RBarryYoung

+0

@RBarryYoung這些字符串長度可以達到1,000,000,並且它們具有獨特的字符,因此字符的長度與此長度一樣長。 –

+0

@Babibu我不知道你如何擁有1,000,000個獨特的角色。我假設你用char表示單個字母或數字或特殊字符(例如'&''$''〜'..) – Roman

回答

1

這讓我想起Longest Common Substring Problem 閱讀維基頁面,它有很好的問題描述,很好的參考文獻,甚至僞代碼。有兩種解決方法:後綴樹和動態規劃。 後綴樹似乎是一個更有效的解決方案,但它可能更復雜,具體取決於您的實現。

如果您不熟悉Dynamic Programming,請閱讀它。 你的問題和最長的公共子串之間的唯一區別是你有一個唯一的整數數組,而在這裏他們有重複字符串中的字符。

您可能會使用它來獲得優勢,但我認爲您不會獲得重大的效率提升。