是字符串集所有子字符串的另一组
问题描述:
我有很多字符串集,并希望测试他们对子集的集合。我希望确定哪些集合包含所有的子字符串。是字符串集所有子字符串的另一组
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循环的数组去做,但我觉得可能有更干净的方法来做到这一点。有什么建议么?谢谢!
答
以下方法看起来不够干净对我说:
是否有一个原因,你的方法'all'不起作用?结果应该是“真”还是“假”? –
这些套件有多大?幼稚的方法适用于少量的字符串,但对于较大的字符串将会效率低下,因为它需要O(N^2)次(最终将每个字符串与集合中的所有元素进行比较)。解决此问题的一个有效方法是使用后缀树或后缀数组,但这些数据结构的实现相当复杂。你可能会找到一些提供它们的库。 – Bakuriu