いいえ、一般的には間違っています(あなたの言いたいことを正しく理解していれば)。もちろん、回文入力に対しては問題なく機能します。
次の Python インタープリターからの出力を参照してください。ここで、入力文字列には と が含ま'alabala'
れ'alabatta'
ます。(出力にはいくつかのスペースと改行が追加されています。) 2 番目のセクションでは、S よりも長い最初のサフィックスの前部は許容されません。つまり、S の回転ではありません。動作するアプローチについては、3 番目のセクションを参照してください。
>>> s = 'alabala'; p = s + ''.join(reversed(s))
>>> sorted([p[i:] for i in range(len(p))])
['a', 'aalabala', 'abala', 'abalaalabala', 'ala', 'alaalabala',
'alabala', 'alabalaalabala', 'bala', 'balaalabala', 'la',
'laalabala', 'labala', 'labalaalabala']
>>> s = 'alabatta'; p = s + ''.join(reversed(s))
>>> sorted([p[i:] for i in range(len(p))])
['a', 'aattabala', 'abala', 'abattaattabala', 'ala', 'alabattaattabala',
'attaattabala', 'attabala', 'bala', 'battaattabala', 'la',
'labattaattabala', 'taattabala', 'tabala', 'ttaattabala', 'ttabala']
>>> s = 'alabatta'; p = s + s
>>> sorted([p[i:] for i in range(len(p))])
['a', 'aalabatta', 'abatta', 'abattaalabatta', 'alabatta',
'alabattaalabatta', 'atta', 'attaalabatta', 'batta', 'battaalabatta',
'labatta', 'labattaalabatta', 'ta', 'taalabatta', 'tta', 'ttaalabatta']