给定 2 个字符串,设计一个函数,可以在不对它们进行任何更改的情况下检查它们是否相互旋转?返回值为 bool 值。
例如 ABCD、ABDC,它们不是旋转。返回错误
ABCD、CDAB 或 DABC 是旋转。返回真。
我的解决方案:
将其中一个向右或向左移动一个位置,然后在每次迭代时比较它们。 如果它们在所有迭代中都不相等,则返回 false。否则,返回真。
它是 O(n)。还有其他更有效的解决方案吗? 如果它们的内容无法更改怎么办?
谢谢
最佳答案
将给定的字符串与给定的字符串连接起来。
在连接的字符串中搜索目标字符串。
例子:
Given = CDAB
After step 1, Concatenated = CDABCDAB
After step 2, Success CDABCDAB
^^^^
关于c++ - 如何检查 2 个字符串是否相互旋转?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7895810/