2016-09-14 131 views
0

我有很多字符串集,並希望測試他們對子集的集合。我希望確定哪些集合包含所有的子字符串。是字符串集所有子字符串的另一組

set1 = {'A123', 'B234', 'C345'} 
set2 = {'A123', 'F234', 'H345'} 
substring_set1 = {'A', 'B'} 

因此,像這樣的僞代碼:

all(substring_set1.areSubstrings(set1)) 
True 

all(substring_set1.areSubstrings(set2) 
False 

或者這樣或許真的?

if all(x in v for v in set1 for x in substring_set1): 
    do stuff 

我想我可以用for循環的數組去做,但我覺得可能有更乾淨的方法來做到這一點。有什麼建議麼?謝謝!

+0

是否有一個原因,你的方法'all'不起作用?結果應該是「真」還是「假」? –

+0

這些套件有多大?幼稚的方法適用於少量的字符串,但對於較大的字符串將會效率低下,因爲它需要O(N^2)次(最終將每個字符串與集合中的所有元素進行比較)。解決此問題的一個有效方法是使用後綴樹或後綴數組,但這些數據結構的實現相當複雜。你可能會找到一些提供它們的庫。 – Bakuriu

回答

3

以下方法看起來不夠乾淨對我說:

​​
相關問題