📅  最后修改于: 2023-12-03 14:39:39.464000             🧑  作者: Mango
在编写C++程序时,我们经常需要处理字符串并进行一些字符串操作。其中一个常见的任务是检查两个字符串是否相互旋转。
相互旋转的定义是:将字符串A的任意部分移动到其末尾得到字符串B,同时将字符串B的任意部分移动到其末尾得到字符串A。例如,"abc" 和 "bca" 是相互旋转的字符串,而 "abc" 和 "acb" 就不是相互旋转的字符串。
下面是一个使用C++编写的函数来检查两个字符串是否相互旋转的示例代码:
#include <iostream>
#include <string>
bool isRotation(const std::string& str1, const std::string& str2) {
// 首先检查两个字符串的长度是否相等,如果不相等,则它们一定不是相互旋转的
if (str1.length() != str2.length()) {
return false;
}
// 将第一个字符串连接到自身,得到一个新的字符串, 如果旋转后的字符串包含第二个字符串,则说明它们相互旋转
std::string rotated = str1 + str1;
if (rotated.find(str2) != std::string::npos) {
return true;
}
return false;
}
int main() {
std::string str1 = "abc";
std::string str2 = "bca";
if (isRotation(str1, str2)) {
std::cout << "两个字符串是相互旋转的" << std::endl;
} else {
std::cout << "两个字符串不是相互旋转的" << std::endl;
}
return 0;
}
在上面的代码中,我们首先定义了一个 isRotation
函数,该函数采用两个常量引用作为参数,分别表示要检查的两个字符串。
函数首先检查两个字符串的长度是否相等,如果不相等,则它们一定不是相互旋转的。然后,我们将第一个字符串连接到自身,得到一个新的字符串,并使用 find
函数在新字符串中查找第二个字符串。如果找到了第二个字符串,说明它们是相互旋转的,返回 true
;否则返回 false
。
在主函数中,我们定义了两个字符串 str1
和 str2
,并调用了 isRotation
函数来检查它们是否相互旋转。根据返回的结果,我们输出相应的信息。
以上即为一个简单的C++程序,用于检查两个字符串是否相互旋转。你可以根据需要修改字符串来进行测试,以验证程序的正确性。
希望以上信息能对你在编写C++程序时检查字符串是否相互旋转的功能有所帮助!