Sebuah Lyndon kata adalah string yang ketat leksikografi lebih kecil daripada rotasi siklik. Diberikan string biner, tentukan apakah itu kata Lyndon dalam sesedikit mungkin byte.
Misalnya, 001011
adalah kata Lyndon. Rotasinya, yang tercantum di bawah ini, diperoleh dengan menggerakkan simbol pertama ke ujung berulang kali.
001011
010110
101100
011001
110010
100101
Dari jumlah tersebut, string asli datang secara leksikografis terlebih dahulu, atau setara, mewakili angka biner terkecil.
Namun, 001001
ini bukan kata Lyndon karena salah satu rotasinya sama dengan dirinya sendiri, yang mengikatnya secara leksikografis paling awal.
Input: String biner yang tidak kosong atau daftar digit 0
dan 1
. Anda tidak boleh menggunakan angka, ingin 5
mewakili 101
.
Output: Nilai Truthy atau Falsey yang konsisten yang mengatakan apakah string itu kata Lyndon.
Built-in khusus untuk kata-kata Lyndon tidak diperbolehkan.
Kasus uji:
Kata-kata Lyndon dengan panjang hingga 6 adalah:
0
1
01
001
011
0001
0011
0111
00001
00011
00101
00111
01011
01111
000001
000011
000101
000111
001011
001101
001111
010111
011111
Panjang non-Lyndon hingga 4 adalah:
00
10
11
000
010
100
101
110
111
0000
0010
0100
0101
0110
1000
1001
1010
1011
1100
1101
1110
1111
Papan peringkat:
x
yang sama denganx
?