快速比较循环数据的方法

Dr.*_*erg 1 sorting algorithm compare data-structures

假设我有任意类型的数据集{A,B,C,D},我想将它与另一个数据集进行比较.我想比较{A,B,C,D},{B,C,D,A},{C,D,A,B}和{D,A,B,C},但是不适用于{A,C,B,D}或任何其他类似订购的套装.什么是快速的方法呢?

将它们存储在数组中,旋转并以这种方式进行比较是一个O(n ^ 2)任务,因此不是很好.

我的第一个直觉是将数据存储为像{A,B,C,D,A,B,C}这样的集合,然后搜索只有O(n)的子集.这可以更快地完成吗?

mcd*_*lla 6

有一种快速算法可以找到字符串的最小旋转 - https://en.wikipedia.org/wiki/Lexicographically_minimal_string_rotation.因此,您可以存储和比较最小旋转.