String 打印可以由两个字符串组成的字符串

String 打印可以由两个字符串组成的字符串,string,algorithm,data-structures,String,Algorithm,Data Structures,我正在努力解决下面的问题。但却找不到正确的解决办法 给定两个字符串,分别是xyz和abc。查找可以由这两个字符串组成的所有字符串。一个限制是每个字符串中的字符序列应该保持不变 示例: xyabzc - Valid xabcyz - Valid abcxyz - Valid xyzacb - Invalid. (b cannot come before c) 我试了以下方法 将两个字符串连接成一个新字符串。获取字符串的所有排列,并删除不遵循上述约束的排列。我知道这是非常模糊的,但这是我提出

我正在努力解决下面的问题。但却找不到正确的解决办法

给定两个字符串,分别是
xyz
abc
。查找可以由这两个字符串组成的所有字符串。一个限制是每个字符串中的字符序列应该保持不变

示例:

xyabzc - Valid

xabcyz - Valid

abcxyz - Valid

xyzacb - Invalid. (b cannot come before c)
我试了以下方法

将两个字符串连接成一个新字符串。获取字符串的所有排列,并删除不遵循上述约束的排列。我知道这是非常模糊的,但这是我提出的唯一解决办法


请建议一种更好的方法。

使用递归可以很容易地解决这个问题。在每个步骤中,可以添加第一个字符串中的字符,也可以添加第二个字符串中的字符

C++代码-

#包括
#包括
#包括
使用名称空间std;
字符串s1、s2//输入字符串
向量v//存储结果字符串的步骤
无效合并_字符串(整数i、整数j、字符串res)
{
如果(i==s1.length()&&j==s2.length())
v、 推回(res);
如果(i伙计,在过去的两个小时里,我一直在想迭代求解这个问题,而你却像个冠军一样递归求解。非常感谢。
abcxyz
abxcyz
abxycz
abxyzc
axbcyz
axbycz
axbyzc
axybcz
axybzc
axyzbc
xabcyz
xabycz
xabyzc
xaybcz
xaybzc
xayzbc
xyabcz
xyabzc
xyazbc
xyzabc