弦がたくさんあります。私の目的では、一方が他方の回転である場合、2つの文字列は同等です(たとえば、「1234」は「3412」と同等です)。
Pythonですべての文字列を1回だけ(回転まで)処理する効率的な方法は何ですか?
私が欲しいものの素朴な実装は次のようになります:
class DuplicateException(Exception): pass
seen = set()
for s in my_strings:
try:
s2 = s+s
for t in seen:
# Slick method I picked up here in SO
# for checking whether one string is
# a rotation of another
if len(s) == len(t) and t in s2:
raise DuplicateException()
seen.add(s)
process(s)
except DuplicateException: pass