📅  最后修改于: 2023-12-03 15:14:01.224000             🧑  作者: Mango
在本篇文章中,我们将介绍如何在 C++ 中编写一个程序来检查两个字符串是否是相互旋转的。我们将使用一种简单的方法,该方法可以用于任何长度的字符串。
我们将采用以下算法来检查两个字符串是否相互旋转:
以下是在 C++ 中实现上述算法的代码片段:
bool areRotations(string str1, string str2) {
if (str1.length() != str2.length())
return false;
string temp = str1 + str1;
return (temp.find(str2) != string::npos);
}
在上面的代码中,我们首先检查这两个字符串的长度是否相同。如果它们的长度不相同,则它们不可能是相互旋转的。然后,我们将第一个字符串连接到自身,得到一个新的字符串。最后,我们搜索第二个字符串在新字符串中的位置,如果它存在,则这两个字符串是相互旋转的。
此代码片段可以直接运行在 C++11 及以上的编译器上。如果您所使用的是更早的 C++ 版本,请使用标准库中的 std::string::npos
替代 string::npos
。
此外,如果您的程序需要频繁执行这个算法,那么建议将第一个字符串连接到自身的操作移动到函数的外部,这样可以减少不必要的字符串连接操作。
在本篇文章中,我们介绍了如何在 C++ 中编写一个程序来检查两个字符串是否是相互旋转的。我们采用了一种简单的方法,它可以用于任何长度的字符串。我们还讨论了一些代码细节和其他一些注意事项。