在准备期末考试时对动态编程问题进行了一些练习,我发现这个问题难倒了我。
拉链:给定三个字符串,你要确定第三个字符串是否可以由前两个字符串中的字符组合而成。前两个字符串可以任意混合,但每个字符串中的字符必须保持在第三个字符串中的原始顺序。
例如,考虑由“cat”和“tree”组成“tcarete”: 字符串 A:cat 字符串 B:树 字符串 C:tcarete
如您所见,我们可以通过选择“tree”的第一个字符,然后是“cat”的前2个字符,然后是“tree”的第二个和第三个字符,然后是“”的最后一个字符来形成字符串C猫”和“树”。
作为第二个例子,考虑由“cat”和“tree”组成“catrtee”: 字符串 A:cat 字符串 B:tree 字符串 C:catrtee
此输入的答案也是“是”
输出:如果 A 和 B 可以组合(压缩)成字符串 C,则输出 yes。如果 A 和 B 不能组合成 C,则输出 no。
所以基本上我们想看看第三个字符串C是否可以由A和B组成。像CTRTAE这样的东西会输出No。我最大的问题是cat和tree都有字母T。所以我不能只运行一个算法来检查一个字母是否在另一个之后。对此有什么帮助吗?