用 C++ 编写一个程序,检查一个字符串是否可以通过将另一个字符串旋转两个位置得到。
假设我们给定两个字符串 ‘a’ 和 ‘b’,任务是找出我们是否可以通过将字符串 ‘a’ 逆时针或顺时针旋转正好两个位置来获得字符串 ‘b’。例如,
输入-1 −
a = google b = legoog
输出 −
True
解释 − 字符串 ‘google’ 可以逆时针旋转两个位置,得到字符串 ‘legoog’。因此,我们返回 True。
输入-2 −
a = tuorialst b = tutorials
输出 −
False
解释- 字符串 ‘tuorialst’ 无法通过任何方向旋转两个位置来得到另一个字符串 ‘tutorials’。因此,我们返回 False。
解决此问题的方法
对于给定的两个字符串,在此方法中我们有两种情况 −
对于逆时针旋转
对于顺时针旋转
首先,如果两个字符串的长度不同,则返回 false。否则,如果两个字符串的长度小于或等于 ‘2’,则返回 True。
在其他情况下,我们将检查字符串 ‘b’ 通过逆时针旋转两个位置得到的子字符串是否等于字符串 ‘a’,如果是,则返回 True。否则,返回 False。
类似地,如果通过将字符串 ‘b’ 顺时针旋转两个位置,它等于字符串 ‘a’,则返回 True,否则,我们将返回 false。
获取两个输入字符串 ‘a’ 和 ‘b’
布尔函数 checkRotated( string a, string b) 获取两个字符串 ‘a’ 和 ‘b’,并返回它们是否可以通过逆时针或顺时针旋转字符串 ‘b’ 来相等。
检查字符串 ‘a’ 和字符串 ‘b’ 的长度。
找到字符串 ‘b’ 通过逆时针旋转两个位置得到的子字符串。
现在检查结果子字符串是否等于字符串 ‘a’,如果相等则返回 true。
找到字符串 ‘b’ 通过顺时针旋转两个位置得到的子字符串。
现在检查结果子字符串是否等于字符串 ‘a’,如果相等则返回 true。
如果字符串不相等,则返回 false。
示例
#include<bits/stdc++.h>
using namespace std;
bool checkRotated(string str1, string str2){
if (str1.length() != str2.length())
return false;
if(str1.length() <= 2 || str2.length() <= 2)
return (str1 == str2);
string s1= str2.substr(str2.size()-2, str2.size());
string s2= str2.substr(0,str2.size()-2);
string s3= s1+s2;
if(s3==str1)
return true;
string s4= str2.substr(2,str2.size());
string s5= str2.substr(0,2);
string s6= s4+s5;
if(s6==str1)
return true;
return false;
}
int main(){
string a= "google";
string b="legoog";
cout<<checkRotated(a,b)<<endl;
return 0;
}输出
如果我们运行以上代码,它将输出如下:
1
由于以上代码的输出为“True”,它将打印 ‘1’。
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP