[Leetcode] 249. Group Shifted Strings

249 Group Shifted Strings

Esta pregunta, de hecho, no resultará muy molesto para entender el truco. El punto es que, de hecho, cada conjunto de resultados se puede extraer en un caso base.



La razón es esta. Tome el primer grupo, por ejemplo, 'abc' => 'bcd' => 'xyz'
Entre ellas, una regla es ba = cb = dc = 1. O xa = yb = zc = 23. Es decir, bcd puede ser abc siempre que se desplace a la izquierda una vez, y xyz también puede ser abc siempre que turnos a la izquierda 23 veces. Si tomamos la cadena cuyo primer carácter es a como caso base de este grupo. Solo necesitamos calcular la distancia entre el primer carácter y a, y sabrá cuántas veces la cadena completa se desplaza hacia la izquierda para convertirse en un grupo de casos base. Luego usamos una tabla hash para mantener a los miembros del equipo. (Los miembros del grupo pueden no incluir el caso base)



Por ejemplo, abc, efg, bdf, efi



1. En abc, la distancia entre ay a es 0, por lo que no es necesario que la cuerda se mueva hacia la izquierda, es un caso base. Hay un grupo abc en la tabla hash y el miembro es abc
2. En efg, la distancia entre e y a es 4, por lo que la cadena debe desplazarse 4 espacios hacia la izquierda, y luego se convierte en el caso base de abc, y luego el grupo abc de la tabla hash Agregar un miembro efg
3. La distancia entre bdf, by a es 1, por lo que toda la cadena se desplaza a la izquierda en 1 para convertirse en el caso base de as, y hay un grupo as adicional en la tabla hash. El miembro es bdf
4. La distancia entre efi, eya es 4, por lo que el desplazamiento general a la izquierda es 4 veces y se convierte en un as, así que agregue otro miembro del grupo as en la tabla hash para ferozmente efi.

Hasta ahora, la parte de valor de cada grupo es el conjunto de soluciones de lista requerido por el problema. Tenga en cuenta nuevamente para evitar el exceso de rango causado por un desplazamiento excesivo a la izquierda, por lo que debe agregar 26 para evitarlo. El código dado es el siguiente:

|_+_|