Ich suche nach einer Möglichkeit zu testen, ob sich eine bestimmte Zeichenfolge für die gesamte Zeichenfolge wiederholt oder nicht.
Beispiele:
[
'0045662100456621004566210045662100456621', # '00456621'
'0072992700729927007299270072992700729927', # '00729927'
'001443001443001443001443001443001443001443', # '001443'
'037037037037037037037037037037037037037037037', # '037'
'047619047619047619047619047619047619047619', # '047619'
'002457002457002457002457002457002457002457', # '002457'
'001221001221001221001221001221001221001221', # '001221'
'001230012300123001230012300123001230012300123', # '00123'
'0013947001394700139470013947001394700139470013947', # '0013947'
'001001001001001001001001001001001001001001001001001', # '001'
'001406469760900140646976090014064697609', # '0014064697609'
]
sind Saiten, die sich wiederholen, und
[
'004608294930875576036866359447',
'00469483568075117370892018779342723',
'004739336492890995260663507109',
'001508295625942684766214177978883861236802413273',
'007518796992481203',
'0071942446043165467625899280575539568345323741',
'0434782608695652173913',
'0344827586206896551724137931',
'002481389578163771712158808933',
'002932551319648093841642228739',
'0035587188612099644128113879',
'003484320557491289198606271777',
'00115074798619102416570771',
]
sind Beispiele für diejenigen, die dies nicht tun.
Die sich wiederholenden Abschnitte der Zeichenfolgen, die mir gegeben werden, können ziemlich lang sein, und die Zeichenfolgen selbst können 500 oder mehr Zeichen umfassen. Daher scheint es furchtbar langsam, jedes Zeichen zu durchlaufen, um ein Muster zu erstellen, und dann das Muster mit dem Rest der Zeichenfolge zu vergleichen. Multiplizieren Sie das mit möglicherweise Hunderten von Zeichenfolgen, und ich sehe keine intuitive Lösung.
Ich habe mich ein wenig mit Regexen befasst und sie scheinen gut zu sein, wenn Sie wissen, wonach Sie suchen oder zumindest die Länge des Musters, das Sie suchen. Leider weiß ich auch nicht.
Wie kann ich feststellen, ob sich eine Zeichenfolge wiederholt und wenn ja, welche Subsequenz am kürzesten wiederholt wird?