我正在使用 BitSets 在 Java 中实现一个程序,但我陷入了以下操作:
给定 N 个 BitSet,如果所有 BitSet 中有超过 1 个,则返回 0,否则返回 1
例如,假设我们有这 3 个集合:
- 10010
- 01011
00111
11100 预期结果
对于以下套装:
- 10010
- 01011
- 00111
- 10100
00101
01000 预期结果
我正在尝试通过按位操作来进行排他,并且我已经意识到我需要的实际上是所有集合之间的排他或,但不是以迭代的方式,所以我很困惑该怎么做。这甚至可能吗?
我想避免昂贵的解决方案,即必须检查每组中的每一位,并为每个位置保留一个计数器......
谢谢你的帮助
编辑:正如一些人所问的,这是我正在从事的项目的一部分。我正在构建一个时间表生成器,基本上其中一个软约束是没有学生应该在 1 天内只有 1 节课,所以这些集合代表每小时参加的学生,我想过滤那些只有 1 节课的学生.