📌  相关文章
📜  C ++程序检查是否可以通过将另一个字符串旋转2个位置来获得一个字符串(1)

📅  最后修改于: 2023-12-03 15:13:45.841000             🧑  作者: Mango

C++程序检查字符串是否可以通过旋转2个位置而相等

本程序可以检查两个字符串是否可以通过将其中一个字符串向右旋转2个位置而得到另一个字符串。例如,字符串"abcd"可以通过将字符串"cdab"向右旋转2个位置而得到。

程序分析

字符串旋转2个位置,相当于将前面的2个字符移动到字符串末尾。所以,我们可以先将第一个字符串前两个字符移动到末尾,然后比较两个字符串是否相等。如果相等,则说明可以通过旋转2个位置得到另一个字符串。

代码实现
#include <iostream>
#include <string>

using namespace std;

bool checkRotation(const string& str1, const string& str2) {
    if (str1.length() == str2.length()) {
        string temp = str1.substr(0, 2) + str1.substr(2) ;
        return (temp == str2);
    }
    return false;
}

int main() {
    string str1, str2;
    cout << "Enter the first string: ";
    getline(cin, str1);
    cout << "Enter the second string: ";
    getline(cin, str2);
    if (checkRotation(str1, str2)) {
        cout << "The second string can be obtained by rotating the first string by 2 positions.";
    } else {
        cout << "The second string cannot be obtained by rotating the first string by 2 positions.";
    }
    return 0;
}
代码解释
  • checkRotation函数用于检查两个字符串是否可以通过旋转2个位置而得到。
  • 当两个字符串的长度相等时,将第一个字符串前两个字符移动到末尾,然后将其与第二个字符串进行比较,返回比较结果。
  • 如果两个字符串的长度不相等,则两个字符串不可以通过旋转2个位置而得到,返回false。
  • main函数调用checkRotation函数,输出检查结果。
使用示例
Enter the first string: abcdefg
Enter the second string: fgabcde
The second string can be obtained by rotating the first string by 2 positions.
总结

本程序演示了如何检查两个字符串是否可以通过旋转2个位置得到相同的字符串。程序使用了字符串的substr函数来实现字符串移位,使用了string类提供的比较运算符来比较两个字符串是否相等。