我將一組英文字母表示爲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