我将一组英文字母表示为26位的位串。第一位对应于'a',将设置位设为'b',依此类推。 因此,
字符串ab被表示为11000000000000000000000000
现在,给定两个位串,我想检查位串1是否是位串2的子集。也就是说,在所有位置,位串1具有'1'位字符串2也应该有'1'。这意味着string1中的所有字符也存在于string2中。有人可以让我知道这样做的最好方法吗?
我知道一个简单的方法如下:遍历位串1并检查位串2中的相应位。不过,我想知道这是否可以使用一些逐位运营商以更有效的方式位字符串:检查一个位串是否是另一个位的子集
6
A
回答
10
如果你真的只使用26位,你可以使用一个整数(32位)来表示此位集,并使用bitwise AND(&)运营商,得到两套的intersection。
a & b == a
如果,a
是b
0
如果你会使用BitSet
,而不是byte
,您可以使用and
或xor
运营商来完成。
BitSet
有不同的位操作,除了shift
,不幸的是。
http://docs.oracle.com/javase/1.4.2/docs/api/java/util/BitSet.html#xor%28java.util.BitSet%29
首先设置xor
秒组应该是0
既然你只使用26个字符,你可以做同样的用一个简单的int
了。只设置各个位更多的是有点乱:
a |= 1 << offset;
+0
这检查相等,而不是子集! – TimeToCodeTheRoad
+0
对于子集使用'a和b = a',等式'a xor b = 0'。 –
相关问题
- 1. 检查一个字符串是否包含正确位置的子字符串
- 2. C - 检查字符串是否是另一个字符串的子字符串
- 3. 检查一个字符串(字)是否是另一个字符串(字)的子集,与序列无关
- 4. 检查3个字符串是否位于同一个句子中--Java
- 5. 最快的方法来检查子字符串是否在另一个字符串的特定位置
- 6. 检查字符串的子是另一个字符串
- 7. 如何检查一个字符串的字符是否存在并与另一个字符串中的字符位于同一位置?
- 8. 如何检查字符串是否是另一个字符串的一个子集
- 9. 爪哇 - 检查是否字符串在另一个字符串
- 10. 检查字符串是否以另一个字符串开头?
- 11. 一个字符串查找是否有另一个字符串
- 12. 判断一个字符串是否是另一个子字符
- 13. 确定一个字符串是否包含特定位置的子字符串
- 14. 查找BigQuery中另一个字符串中的一个字符串的位置
- 15. 如何检查一个字符串中的某个位置是否为空c#
- 16. Android检查位图是否包含另一个位图
- 17. 查找字符串列表中的字符串是否位于另一个Esper字符串列表中
- 18. 位移一个字符串
- 19. 检查一个字符串是否与另一个字符串相似
- 20. 有效检查一个字符串是否包含另一个字符串
- 21. 检查一个字符串是否以另一个字符串开头
- 22. 检查一个字符串是否包含另一个字符串
- 23. 如何检查一个字符串是否等于另一个字符串?
- 24. 检查一个字符串是否包含另一个字符串
- 25. 检查一个nsstring是否与另一个字符串匹配
- 26. 如何检查一个字符串是否包含一个子字符串 - mysql
- 27. 检查一个列表中的任何字符串是否是另一个列表中的子字符串
- 28. 查找一个字符串(“AB”)是否是另一个字符串(“ABCD”)的子集?
- 29. 如何检查字符串是否是另一个字符串的回文
- 30. 如何检查给定的Python字符串是否是另一个字符串的子字符串?
的子集,这是如何存储,作为一个'String'或作为积分值('Integer')占据第一26个比特?如果后者,简单的按位操作应该做的伎俩,其他更复杂.. – Nim