不知道如何在标题中解释问题。
这是问题所在:
假设我们有 4 组:
(a, b, c, d)
(e, f)
(g, h, i)
(j, k, l, m, n)
现在给了我一个 4 元素元组,例如(a, e, h, m)
,两个都不是来自一个组,所以我返回 True。如果给定(a, b, e, g)
,则a, b
来自一组,返回 False。
然后这是我目前的想法,我给每个元素一个以组号开头的 id 并测试是否重复。
g1 = ['1a', '1b', '1c', '1d']
g2 = ['2e', '2f']
g3 = ['3g', '3h', '3i']
g4 = ['4j', '4k', '4l', '4m', '4n']
def test(elements):
if len(elements) != 4:
return False
stack = []
for e in elements:
mark = e[:1]
if mark in stack:
return False
stack.append(mark)
ga = set(g1 + g2 + g3 + g4)
return set(elements).issubset(ga)
print test(('1a', '1b', '2e', '3g'))
print test(('1a', '2e', '3g', '4m'))
但我认为字符串比较不是一个非常优雅的解决方案,这可以通过另一种更快的算法来完成吗?