C++程序 检查两个字符串是否是彼此的旋转体

C++程序 检查两个字符串是否是彼此的旋转体

在我们的日常生活中,经常会遇到检查两个字符串是否彼此是旋转体的需求。例如,把字符串”abcdef”旋转一下,得到字符串”defabc”,他们就是彼此的旋转体。那么,在本文中,我们将会教大家如何使用C++编程实现该功能。

问题描述

给定两个字符串str1和str2,我们需要检查两个字符串是否是彼此的旋转体。如果是,返回true,否则,返回false。

解决方案

解题思路:

  • 首先检查两个字符串的长度是否相同,如果不同,那么它们一定不是彼此的旋转体。
  • 我们可以通过循环遍历的方式,即逐个旋转str1,然后和str2比较,看是否相同。如果旋转完全了一圈,还没有找到相同的,则它们不是彼此的旋转体。

下面是C++的代码实现:

#include<bits/stdc++.h> 
using namespace std; 

bool areRotations(string str1, string str2) 
{ 
   if (str1.length() != str2.length()) 
        return false; 

   string temp = str1 + str1;  
  //如果是旋转的话,旋转后的两个字符串会组成一个新的字符串,而长度就是原来字符串长度的两倍。因此,我们可以将其中一个字符串复制一遍,拼接起来,然后判断另一个字符串是否是新字符串的子串即可。
   return (temp.find(str2) != string::npos); 
} 

int main() 
{ 
    string str1 = "ABCDE"; 
    string str2 = "CDEAB"; 

    if (areRotations(str1, str2)) 
        cout<<"Yes"<<endl; 
    else
        cout<<"No"<<endl; 

    string str3 = "AAAB"; 
    string str4 = "ABAA"; 

    if (areRotations(str3, str4)) 
        cout<<"Yes"<<endl; 
    else
        cout<<"No"<<endl; 

    return 0; 
} 

结论

最后,我们可以得到结论:对于给定的两个字符串str1、str2,如果它们的长度相同,且str2是str1旋转后得到的字符串的子串,则认为它们是彼此的旋转体。以上为C++代码实现。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程

C++ 示例