A94817.完美的洗牌

普及/提高-

通过率:0%

时间限制:1.00s

内存限制:128MB

题目描述

魔术师手中有两叠扑克牌,我们把它们记作牌堆 AA 和牌堆 BB
牌堆 AA 中包含 NN 张牌,从上到下依次记录为字符串 S1S_1
牌堆 BB 中包含 MM 张牌,从上到下依次记录为字符串 S2S_2

现在魔术师进行一次“完美洗牌”操作:他将这就两堆牌交错地插在一起,形成了一堆新的牌(包含 N+MN+M 张),记作 S3S_3

在洗牌过程中,魔术师必须遵守以下规则:

  1. 顺序保留:来自 S1S_1 的牌在 S3S_3 中的相对顺序不能改变;来自 S2S_2 的牌在 S3S_3 中的相对顺序也不能改变。
  2. 完全使用S3S_3 必须恰好包含 S1S_1S2S_2 中的所有字符,不多也不少。

现在给你三个字符串 S1,S2,S3S_1, S_2, S_3,请你判断 S3S_3 是否能由 S1S_1S2S_2 通过上述“洗牌”规则得到。

输入格式

输入共三行。
第一行包含一个字符串 S1S_1
第二行包含一个字符串 S2S_2
第三行包含一个字符串 S3S_3

输出格式

如果 S3S_3 是由 S1S_1S2S_2 交错组成的,输出 1;否则输出 0

输入输出样例

  • 输入#1

    aabcc
    dbbca
    aadbbcbcac

    输出#1

    1
  • 输入#2

    aabcc
    dbbca
    aadbbbaccc

    输出#2

    0

说明/提示

样例解释与数据范围

样例 #1 解释

输出:1 (True)
S1="aabcc"S_1 = \text{"aabcc"}, S2="dbbca"S_2 = \text{"dbbca"}
S3="aadbbcbcac"S_3 = \text{"aadbbcbcac"}
我们可以这样拆分 S3S_3

  • S3S_3 的第 1, 2 位 aa 来自 S1S_1
  • S3S_3 的第 3, 4, 5 位 dbb 来自 S2S_2
  • S3S_3 的第 6 位 c 来自 S1S_1
  • S3S_3 的第 7 位 b 来自 S2S_2
  • S3S_3 的第 8 位 c 来自 S1S_1
  • S3S_3 的第 9 位 a 来自 S2S_2
  • S3S_3 的第 10 位 c 来自 S1S_1
    合并起来正是 S1S_1S2S_2 的顺序交错。

样例 #2 解释

输出:0 (False)
虽然 S3S_3 包含了 S1S_1S2S_2 的所有字符,但在尝试匹配时会发现,无法在保持 S1S_1S2S_2 内部顺序的前提下组成 S3S_3。例如最后两个字符 cc 无法在不打乱顺序的情况下被放置。

数据范围

对于 100%100\% 的数据:

  • 字符串仅包含小写英文字母。
  • 0S1,S22000 \le |S_1|, |S_2| \le 200
  • 0S34000 \le |S_3| \le 400

数据点分布:

  • 测试点 1-5:S1,S25|S_1|, |S_2| \le 5 (极小数据)
  • 测试点 6-15:S1,S250|S_1|, |S_2| \le 50
  • 测试点 16-25:S1,S2200|S_1|, |S_2| \le 200
首页