📌  相关文章
📜  用于检查给定字符串是否可以由其他两个字符串或其排列组成的 C++ 程序(1)

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

判断字符串能否由其他两个字符串或其排列组成的 C++ 程序

介绍

编写一个 C++ 程序,判断一个字符串是否可以由两个给定的字符串或其排列组成。如果能够组成,则返回 true,否则返回 false。

例如:给定字符串 "abcd",和两个字符串 "a" 和 "bc",那么 "abcd" 是由 "a" 和 "bc" 组成的,返回 true。

程序实现

我们可以将给定的两个字符串或其排列组合成一个新的字符串,然后对新字符串和给定字符串进行排序,如果排序后的字符串相等,则表示给定字符串可以由两个字符串或其排列组成,否则表示不能。

下面给出可行的代码片段:

#include <algorithm>
#include <string>

using std::sort;
using std::string;

bool canBeConstructed(string givenStr, string str1, string str2)
{
    string newStr = str1 + str2;

    sort(givenStr.begin(), givenStr.end());
    sort(newStr.begin(), newStr.end());

    return givenStr == newStr;
}
使用示例

可以使用以下样例数据测试代码:

int main()
{
    string givenStr = "abcd";
    string str1 = "a";
    string str2 = "bc";

    bool result = canBeConstructed(givenStr, str1, str2);

    cout << (result ? "true" : "false") << endl;

    return 0;
}

输出结果应该为:

true
总结

本文介绍了如何编写一个 C++ 程序来判断一个字符串是否可以由两个给定字符串或其排列组成。我们使用了一个新的字符串来表示给定的两个字符串或其排列,然后对新字符串和给定字符串进行排序,最后比较排序后的字符串是否相等。最终程序可以返回判断结果。