Saya sedang mencari cara untuk menguji apakah suatu string diberikan berulang untuk seluruh string atau tidak.
Contoh:
[
'0045662100456621004566210045662100456621', # '00456621'
'0072992700729927007299270072992700729927', # '00729927'
'001443001443001443001443001443001443001443', # '001443'
'037037037037037037037037037037037037037037037', # '037'
'047619047619047619047619047619047619047619', # '047619'
'002457002457002457002457002457002457002457', # '002457'
'001221001221001221001221001221001221001221', # '001221'
'001230012300123001230012300123001230012300123', # '00123'
'0013947001394700139470013947001394700139470013947', # '0013947'
'001001001001001001001001001001001001001001001001001', # '001'
'001406469760900140646976090014064697609', # '0014064697609'
]
adalah string yang berulang, dan
[
'004608294930875576036866359447',
'00469483568075117370892018779342723',
'004739336492890995260663507109',
'001508295625942684766214177978883861236802413273',
'007518796992481203',
'0071942446043165467625899280575539568345323741',
'0434782608695652173913',
'0344827586206896551724137931',
'002481389578163771712158808933',
'002932551319648093841642228739',
'0035587188612099644128113879',
'003484320557491289198606271777',
'00115074798619102416570771',
]
adalah contoh yang tidak.
Bagian berulang dari string yang saya berikan bisa sangat panjang, dan string itu sendiri bisa 500 atau lebih karakter, jadi perulangan melalui setiap karakter mencoba membangun pola kemudian memeriksa pola vs sisa string tampaknya sangat lambat. Lipat gandakan dengan ratusan string dan saya tidak bisa melihat solusi intuitif.
Saya telah melihat ke regex sedikit dan mereka tampak bagus ketika Anda tahu apa yang Anda cari, atau setidaknya panjang pola yang Anda cari. Sayangnya, saya juga tidak tahu.
Bagaimana saya bisa tahu apakah sebuah string berulang dan jika ya, apa yang merupakan pengulangan terpendek adalah?