背景
一个林登字是一个非空字符串,它是严格按字典比所有其他的旋转小。可以将任何字符串唯一地分解为Lyndon单词的串联,这样这些子单词在字典上就不会增加;您的挑战是尽可能简洁地执行此操作。
细节
您应该实现一个函数或程序,该函数或程序枚举任何可打印ASCII字符串的Lyndon字分解,以便将结果子字符串输出为某种数组或流。字符应按其代码点进行比较,并允许使用所有标准输入和输出方法。与通常的代码高尔夫球一样,以字节为单位的最短程序获胜。
测试用例
'' []
'C' ['C']
'aaaaa' ['a', 'a', 'a', 'a', 'a']
'K| ' ['K|', ' ']
'abaca' ['abac', 'a']
'9_-$' ['9_', '-', '$']
'P&O(;' ['P', '&O(;']
'xhya{Wd$' ['x', 'hy', 'a{', 'Wd', '$']
'j`M?LO!!Y' ['j', '`', 'M', '?LO', '!!Y']
'!9!TZ' ['!9!TZ']
'vMMe' ['v', 'MMe']
'b5A9A9<5{0' ['b', '5A9A9<5{', '0']
相关
—
xnor17年
请注意,这等效于按
—
CalculatorFeline
<=
ness 拆分。(我不知道如何更好地表达这一点:|)
这是否等同于重复采用比第一个字符大的所有字符和前缀?
—
xnor
@xnor号。“ abac”是林登语。
—
user1502040
@ user1502040我知道,联系很有趣。我建议添加一些测试用例来捕捉这一点。
—
xnor