#J50006. 括号匹配

括号匹配

问题描述

给定一个由 66 种字符 (, ), [, ], <, > 组成的字符串 SS

当字符串 TT 满足以下条件时,称其为卡芙乐括号列

通过执行以下操作若干次(包括零次)可以将 TT 变为空字符串:

  • TT 中存在连续的 (), [], <> 子字符串,选择其中任意一个删除;
  • 若删除的子字符串位于 TT 的开头或结尾,则将剩余部分作为新的 TT
  • 否则,将删除位置前后的字符串连接为新的 TT

请你判断 SS 是否为卡芙乐括号列。

输入格式

第一行输入一个字符串 SS

输出格式

SS 是卡芙乐括号列则输出 Yes,否则输出 No

样例输入 1

([])<>()

样例输出 1

Yes

样例输入 2

([<)]>

样例输出 2

No

样例输入 3

())

样例输出 3

No

说明

样例 1 解释:

对于 S=S = ([])<>(),可通过以下操作变为空字符串:

  • 删除第 232 \sim 3 个字符 [],得到新字符串 ()<>()
  • 删除第 121 \sim 2 个字符 (),得到新字符串 <>()
  • 删除第 121 \sim 2 个字符 <>,得到新字符串 ()
  • 删除 () 后字符串变为空。 因此输出 Yes

样例 2 解释:

S=S = ([<)]> 不包含任何 (), [], <> 子字符串,无法执行任何操作,因此输出 No

样例 3 解释:

无法通过操作将 S=S = ()) 变为空字符串,因此输出 No

评测数据规模

对于所有评测数据:

  • 1S2×1051 \leq |S| \leq 2 \times 10^5
  • SS 仅由 (, ), [, ], <, > 组成