Bir Lyndon kelimesi , kesinlikle döngüsel olarak herhangi bir döngüsel dönüşten daha küçük olan bir dizedir . İkili bir dize verildiğinde, bunun bir Lyndon sözcüğü olup olmadığını mümkün olduğunca az bayt olarak belirleyin.
Örneğin 001011
, bir Lyndon kelimesidir. Aşağıda listelenen rotasyonları, ilk sembolü sonuna kadar tekrar tekrar hareket ettirerek elde edilir.
001011
010110
101100
011001
110010
100101
Bunlardan, orijinal dize sözlüksel olarak ilk önce gelir veya eşit olarak en küçük ikili sayıyı temsil eder.
Ancak, 001001
bir Lyndon sözcüğü değildir , çünkü rotasyonlarından biri sözlükbilimsel olarak en erken tarih için onu bağlayanla aynıdır.
Giriş: Boş olmayan bir ikili dize veya basamak listesi 0
ve 1
. Sen olabilir değil gibi numaraları kullanmak 5
temsil etmek 101
.
Çıktı: Dizenin Lyndon sözcüğü olup olmadığını belirten tutarlı bir Truthy veya Falsey değeri.
Özel olarak Lyndon kelimeleri için yerleşik yapılara izin verilmez.
Test durumları:
Uzunluğu 6'ya kadar olan Lyndon kelimeleri:
0
1
01
001
011
0001
0011
0111
00001
00011
00101
00111
01011
01111
000001
000011
000101
000111
001011
001101
001111
010111
011111
4'e kadar uzunluktaki Lyndon olmayan kelimeler:
00
10
11
000
010
100
101
110
111
0000
0010
0100
0101
0110
1000
1001
1010
1011
1100
1101
1110
1111
Liderler Sıralaması:
x
eşit olmadığının nasıl kontrol edilirx
?