Una palabra de Lyndon es una cadena que es estrictamente lexicográfica más pequeña que cualquiera de sus rotaciones cíclicas. Dada una cadena binaria, determine si es una palabra Lyndon en la menor cantidad de bytes posible.
Por ejemplo, 001011
es una palabra de Lyndon. Sus rotaciones, enumeradas a continuación, se obtienen moviendo repetidamente el primer símbolo hasta el final.
001011
010110
101100
011001
110010
100101
De estos, la cadena original viene primero lexicográficamente, o de manera equivalente, representa el número binario más pequeño.
Sin embargo, 001001
no es una palabra de Lyndon porque una de sus rotaciones es la misma, lo que lo vincula desde el punto de vista lexicográfico más temprano.
Entrada: una cadena binaria no vacía o una lista de dígitos 0
y 1
. Es posible que no utilice números, como 5
para representar 101
.
Salida: Un valor consistente de Verdad o Falsey que dice si la cadena es una palabra de Lyndon.
No se permiten las incorporaciones específicas para palabras de Lyndon.
Casos de prueba:
Las palabras de Lyndon con una longitud de hasta 6 son:
0
1
01
001
011
0001
0011
0111
00001
00011
00101
00111
01011
01111
000001
000011
000101
000111
001011
001101
001111
010111
011111
Las palabras que no son Lyndon de longitud hasta 4 son:
00
10
11
000
010
100
101
110
111
0000
0010
0100
0101
0110
1000
1001
1010
1011
1100
1101
1110
1111
Tabla de clasificación:
x
igualesx
?