#749. 括号栈查询
括号栈查询
题目描述
一个字符串 被称为 合法括号序列 当且仅当可以通过若干次(可能为 次)以下操作将 变成空串:
- 选择子串
()并将其删除。
例如:()、(()()) 和空串都是合法括号序列;)()(、))) 不是合法括号序列。
现在维护一个初始为空的字符串 ,需要按给定顺序处理 个操作。每处理完一个操作,请判断当前的 是否为一个合法括号序列。
操作有两种类型:
1 c:给定字符 ( 为(或)),将 追加到 的末尾。2:删除 的最后一个字符(保证此时 非空)。
处理所有操作,要求在每次操作后输出当前 是否为合法括号序列。
输入格式
输入共 行:
-
第一行包含一个整数 ,表示操作数量。
-
接下来的 行,每行是一个操作,格式为:
1 c表示将字符 ( 为(或))追加到 末尾;2表示删除 的最后一个字符(保证操作时 非空)。
输出格式
输出 行,第 行应为处理完第 个操作后字符串 是否为合法括号序列:
- 若是,输出
Yes; - 否则,输出
No。
样例输入
8
1 (
2
1 (
1 )
2
1 (
1 )
1 )
样例输出
No
Yes
No
Yes
No
No
No
Yes
说明
样例解释
- 在处理完 第 个 操作后立即出现了
(,这不是一个好的括号序列。 - 在处理完 第 个 操作后的 是一个空字符串,这是一个良好的括号序列。
- 在处理完 第 个 操作之后的 是
(,这不是一个好的括号序列。 - 在处理完 第 个 操作后的 是
(),这是一个良好的括号序列。 - 在处理完 第 个 操作后, 立即是
(,这不是一个好的括号序列。 - 在处理完 第 个操作后立即是
((,这不是一个好的括号序列。 - 在处理完 第 个 操作后立即是
((),这不是一个好的括号序列。 - 在处理完 第 个 操作后立即是
(()),这是一个好的括号序列。
数据范围
- 。
- 操作中出现的字符 仅为
(或)。 - 保证在出现类型
2的操作时,当前 非空。