背景
一个林登字是一个非空字符串,它是严格按字典比所有其他的旋转小。可以将任何字符串唯一地分解为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