我浏览了一些关于确定一个集合 A
是否是另一个集合 B
的子集的帖子,但我发现很难确定要使用哪个算法。以下是问题的概述:
- 我有一个字符串数组
A
,它在程序开始时被接收。对该结构不了解太多信息。数组中的每个字符串可以是任意长度,条目数没有限制,尽管通常可以假定数组中的条目数不会过多(<100)。 - 然后我遍历长度为
n
的对象列表。 - 每个 n 个对象也将具有一个字符串数组
B
,即将有 n 个B
数组。一旦程序运行,B
就会固定下来,即在运行时它们不会发生变化。 - 我想确定对于每个对象,
A
是否是B
的子集。
现在,我考虑使用哈希表。但是,我认为它们只有在只有一个 B
和许多 A
的情况下才有效。然后我可以为 B
制作一个哈希表,并针对我的哈希表检查每个对象的每个字符串数组。但是这并不是情况,因为只有一个 A
,但有 n 个 B
。有什么有效的算法可以做到这一点吗?
示例:
A: ["A", "G", "T"]
B1: ["C", "G"]
B2: ["K", "A", "U", "T", "G"]
.
.
.
Bn: ["T", "I", "G", "O", "L"]
这里的A
是B2
的子集,但不是B1
或者Bn
的子集。
A
始终固定在开头。B
也在程序运行时固定不变,并且它们不会改变。但是有很多个B
存在。 - lord.garbage