一个林登字是一个字符串,它是严格字典序小比任何其循环旋转。给定一个二进制字符串,请确定它是否是尽可能少的字节中的Lyndon字。
例如,001011
是Lyndon单词。通过重复将第一个符号移到末尾,可以得到下面列出的旋转角度。
001011
010110
101100
011001
110010
100101
其中,原始字符串按字典顺序排在第一位,或者等效地代表最小的二进制数。
但是,001001
它不是Lyndon单词,因为它的一种旋转方式与其本身相同,因此最早在字典上联系在一起。
输入:非空的二进制字符串或数字列表0
和1
。您不能使用数字5
来表示101
。
输出:一致的Truthy或Falsey值,指示字符串是否为Lyndon单词。
不允许专门用于Lyndon单词的内置函数。
测试用例:
长度不超过6的Lyndon单词是:
0
1
01
001
011
0001
0011
0111
00001
00011
00101
00111
01011
01111
000001
000011
000101
000111
001011
001101
001111
010111
011111
长度不超过4的非林登词为:
00
10
11
000
010
100
101
110
111
0000
0010
0100
0101
0110
1000
1001
1010
1011
1100
1101
1110
1111
排行榜:
x
等于x
?