📌  相关文章
📜  C ++程序检查字符串是否相互旋转(1)

📅  最后修改于: 2023-12-03 14:39:39.464000             🧑  作者: Mango

C++程序检查字符串是否相互旋转

在编写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

在主函数中,我们定义了两个字符串 str1str2,并调用了 isRotation 函数来检查它们是否相互旋转。根据返回的结果,我们输出相应的信息。

以上即为一个简单的C++程序,用于检查两个字符串是否相互旋转。你可以根据需要修改字符串来进行测试,以验证程序的正确性。

希望以上信息能对你在编写C++程序时检查字符串是否相互旋转的功能有所帮助!