我有大量的字符串。出于我的目的,如果一个字符串是另一个字符串的旋转,则两个字符串是等效的(例如,'1234' 等效于'3412')。
什么是在 Python 中只处理每个字符串一次(直到旋转)的有效方法?
我想要的一个天真的实现可能看起来像:
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