C++程序 检查一个字符串是否可以通过至多X次循环顺时针移位从另一个字符串形成

C++程序 检查一个字符串是否可以通过至多X次循环顺时针移位从另一个字符串形成

C++中,实现判断一个字符串是否可以通过至多X次循环顺时针移位从另一个字符串形成的功能,可以通过以下步骤实现:

步骤1:获取输入的两个字符串

通过输入函数getline()获取两个字符串,分别保存在str1str2字符串变量中。

#include <iostream>
#include <string>
using namespace std;

int main() {
    string str1, str2;
    getline(cin, str1);
    getline(cin, str2);
    return 0;
}

步骤2:判断两个字符串长度是否相等

如果两个字符串长度不相等,则不可能通过移位形成。可以通过字符串变量的length()函数获取字符串的长度,用if语句判断长度是否相同。

#include <iostream>
#include <string>
using namespace std;

int main() {
    string str1, str2;
    getline(cin, str1);
    getline(cin, str2);

    if (str1.length() != str2.length()) {
        cout << "两个字符串长度不同,无法通过移位形成" << endl;
        return 0;
    }

    return 0;
}

步骤3:判断字符串是否可以通过循环移位形成

通过循环移位可以产生多个新的字符串,需要逐个判断这些新字符串是否与另一个字符串相等。如果两个字符串相等,则可以通过循环移位形成。如果所有新字符串都不相等,则无法通过循环移位形成。

#include <iostream>
#include <string>
using namespace std;

int main() {
    string str1, str2;
    getline(cin, str1);
    getline(cin, str2);

    if (str1.length() != str2.length()) {
        cout << "两个字符串长度不同,无法通过移位形成" << endl;
        return 0;
    }

    bool found = false;
    for (int i = 0; i < str2.length(); i++) {
        string shifted = str2.substr(i) + str2.substr(0, i);
        if (shifted == str1) {
            found = true;
            break;
        }
    }

    if (found) {
        cout << "可以通过至多X次循环顺时针移位从另一个字符串形成" << endl;
    } else {
        cout << "无法通过循环移位形成" << endl;
    }

    return 0;
}

在上面的代码中,substr()函数用于提取子字符串。其中,substr(i)表示从索引i开始提取到字符串末尾的子字符串,substr(0, i)表示从字符串头部开始提取到索引i的子字符串。

结论

通过以上步骤,可以实现一个C++程序来判断一个字符串是否可以通过至多X次循环顺时针移位从另一个字符串形成。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程

C++ 示例