#J50002. 括号操作
括号操作
问题描述
在由小写英文字母、(、) 组成的字符串中,若可以通过以下步骤变为空字符串,则称其为好字符串:
- 首先,删除所有小写英文字母;
- 然后,只要存在连续的
(),就将其删除。
例如,((a)ba) 删除所有小写英文字母后变为 (()),然后删除第 和第 个字符的连续 () 后变为 (),最终变为空字符串,因此是好字符串。
给定一个好字符串 ,第 个字符记为 。
对于每个小写英文字母 a、b、、z,各有一个写有该字母的小球,并准备一个初始为空的箱子。
高桥君按照 的顺序,依次进行如下操作,除非他中途晕倒:
- 如果 是小写英文字母,则将写有该字母的小球放入箱子中。若该小球此时已经在箱子中,高桥君会晕倒。
- 如果 是
(,则什么也不做。 - 如果 是
),则取 之前最大的整数 ,使得 的第 到第 个字符组成的子串为好字符串(可以证明这样的 一定存在)。将第 到第 步操作中放入箱子的所有小球从箱子中取出。
请你判断高桥君能否在不晕倒的情况下完成所有操作。
输入格式
第一行输入一个字符串 。
输出格式
如果高桥君能在不晕倒的情况下完成所有操作,输出 Yes;否则输出 No。
样例输入 1
((a)ba)
样例输出 1
Yes
样例输入 2
(a(ba))
样例输出 2
No
样例输入 3
(((())))
样例输出 3
Yes
样例输入 4
abca
样例输出 4
No
说明
样例 1 解释:
- 时,为
(,什么也不做; - 时,为
(,什么也不做; - 时,将写有
a的小球放入箱子; - 时,为
), 之前使得子串为好字符串的最大 为 (对应子串(a)),将第 到第 步放入的球取出,即取出a; - 时,将写有
b的小球放入箱子; - 时,将写有
a的小球放入箱子; - 时,为
),最大 为 (对应整个字符串),将第 到第 步放入的球取出,即取出a和b。 最终顺利完成所有操作,输出Yes。
样例 2 解释:
- 时,什么也不做;
- 时,将
a放入箱子; - 时,什么也不做;
- 时,将
b放入箱子; - 时,试图将
a放入箱子,但此时a已经在箱子中,高桥君晕倒,操作终止。输出No。
评测数据规模
对于所有评测数据:
- 是好字符串