Represento el conjunto de alfabetos ingleses como una cadena de bits de 26 bits. El primer bit corresponde a 'a', el bit configurado a 'b', y así sucesivamente. Por lo tanto,
La cadena ab se representa como 11000000000000000000000000
Ahora bien, dado dos cadenas de bits, quiero comprobar si bitstring 1 es un subconjunto de la cadena de bits 2. Es decir, en todos los lugares bitstring 1 tiene un '1', el bit la cadena 2 también debería tener un '1'. Esto significa que todos los caracteres en string1 también están presentes en string2. ¿Alguien puede decirme la mejor manera de hacer esto?
Sé de una manera simple de la siguiente manera: recorrer el bit de la cadena 1 y verificar el bit correspondiente en el bit de la cadena2. Sin embargo, me pregunto si esto se puede hacer uso de algún operador poco sabia de una manera más eficienteCadenas de bits: verificando si una cadena de bits es un subconjunto de otra
Respuesta
Si realmente está utilizando sólo 26 bits puede utilizar un número entero (32 bits) para representar el bitset, y el uso de la (&) operador bitwise AND, para obtener el intersection de los dos conjuntos.
Si a & b == a
, a
es un subconjunto de b
Si estaría utilizando BitSet
en lugar de byte
, se puede utilizar el and
o xor
operadores.
BitSet
tiene varias operaciones de bits, excepto por shift
, desafortunadamente.
http://docs.oracle.com/javase/1.4.2/docs/api/java/util/BitSet.html#xor%28java.util.BitSet%29
primer conjunto xor
segundo conjunto debe ser 0.
Dado que sólo utiliza 26 caracteres, se puede hacer lo mismo con una simple int
, también. Sólo la creación de los bits individuales es un poco más complicado:
a |= 1 << offset;
¡esto verifica la igualdad, no el subconjunto! – TimeToCodeTheRoad
Para el subconjunto use 'a y b = a', para igualdad' a xor b = 0'. –
- 1. Compruebe si una matriz es un subconjunto de otra
- 2. ¿Cómo puedo verificar si un binario compilado es de 32 bits o de 64 bits?
- 3. Programar determinar si native .exe es de 32 bits o de 64 bits
- 4. uint es de 32 bits, sin importar si el sistema es de 32 o 64 bits?
- 5. Determine si el proceso actual de PowerShell es de 32 bits o de 64 bits.
- 6. Comprobando si el archivo es de 32 bits o de 64 bits: en Windows
- 7. Qué comando usar para comprobar si python es de 64 bits o de 32 bits
- 8. Elegante y segura manera de determinar si la arquitectura es de 32 bits o 64 bits
- 9. ¿Es posible acceder a un dll de 64 bits desde una aplicación de 32 bits?
- 10. ¿iPhone OS es de 64 bits o 32 bits?
- 11. Convertir cadena hexadecimal de 128 bits a base-36 cadena
- 12. ¿Cuál es una manera eficiente de saber si un mapa de bits es completamente negro?
- 13. Compruebe si una matriz es un subconjunto de otra matriz en Ruby
- 14. Usando C#, ¿cómo saber si mi máquina es de 64 bits o 32 bits?
- 15. profundidad de bits de 16 bits
- 16. Cómo genrate una máscara de bits en blanco y negro de un mapa de bits de 32 bits
- 17. Aplicaciones Java de 64 bits: ¿Se requiere un SO de 64 bits, un JRE de 64 bits y una Aplicación de 64 bits?
- 18. columna de bits computarizada que indica si otra columna es nulo
- 19. Lectura en 16 bits de un registro de 32 bits
- 20. 64 bits por división de 32 bits
- 21. ¿Cómo es que un kernel de 32 bits puede ejecutar un binario de 64 bits?
- 22. cadenas de C++: codificación UTF-8 o 16 bits?
- 23. Formas de acceder a una DLL de 32 bits desde un exe de 64 bits
- 24. ¿Qué es una buena función hash de 64 bits en Java para cadenas textuales?
- 25. Cadenas de bits que coinciden con el patrón de Erlang
- 26. Convertir mapa de bits a cadena
- 27. Llamar a LoadLibrary en un dll de 64 bits desde un proceso de 32 bits
- 28. ejecutando un binario de 32 bits en una máquina de 64 bits
- 29. Cómo sustituir bits en un campo de bits sin afectar a otros bits utilizando c
- 30. ¿Por qué __sync_add_and_fetch funciona para una variable de 64 bits en un sistema de 32 bits?
¿Cómo se almacena, como una 'string' o como un valor integral (' Integer') que ocupan los primeros 26 bits? En este último caso, las operaciones simples a nivel de bitácora deberían hacer el truco, de lo contrario, más complicado ... – Nim