我正在编写一个程序来比较两个1023位代码,并检测一个代码是否与另一个代码相同;如果没有,可以通过滑动位(通过执行左或右旋转)使它们相同。
所以我关心的是检查代码的位是否在同一个顺序中,并且可以通过滑动任一代码中的位来使其相等。
例如:
代码1:110101011
代码2:101111010
算法必须使代码相等,因为我可以通过将代码1的位向右滑动5来从代码1中获取代码2。有没有更好的方法来执行此操作,而不是执行AND操作来检查相等性,然后是滑动的按位移位?
答案 0 :(得分:1)
你必须构建它并对其进行基准测试以了解它的速度有多快,但你可以通过将代码2的两个副本连接在一起来构建代码3,从代码3构造Generalized Suffix Tree,然后再看看是否包含代码1的副本。
这将是O(n)
算法,其中n
是代码的长度。