c++ - 如何检查 2 个字符串是否相互旋转?

标签 c++ string algorithm comparison rotation

给定 2 个字符串,设计一个函数,可以在不对它们进行任何更改的情况下检查它们是否相互旋转?返回值为 bool 值。

例如 ABCD、ABDC,它们不是旋转。返回错误

ABCD、CDAB 或 DABC 是旋转。返回真。

我的解决方案:

将其中一个向右或向左移动一个位置,然后在每次迭代时比较它们。 如果它们在所有迭代中都不相等,则返回 false。否则,返回真。

它是 O(n)。还有其他更有效的解决方案吗? 如果它们的内容无法更改怎么办?

谢谢

最佳答案

  1. 将给定的字符串与给定的字符串连接起来。

  2. 在连接的字符串中搜索目标字符串。

例子:

Given = CDAB

After step 1, Concatenated = CDABCDAB

After step 2, Success CDABCDAB
                        ^^^^

关于c++ - 如何检查 2 个字符串是否相互旋转?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7895810/

相关文章:

.net - 创建强名称托管 (/clr) C++ 程序集

c - 类似的 C 字符串具有不同的大小

java - 查找另一个字符串中的多个字符串

android - 无法在android中使用比较器对数据进行排序

c++ - 动态结构错误,指针转换

c++ - 使用 boost::shared_ptr 的集合中的不同模板类

c++ - 与 PushButton 关联的 QLabel 不出现

java - 根据选定的字符数拆分 ArrayList 中的字符串

调查流程的算法

javascript - 算法页面链接