题目描述
满足如下条件的字符串称为括号匹配的字符串:
- 空字符串是括号匹配的字符串。
- 若A是括号匹配的串,则(A)、[A]是括号匹配的字符串。
- 若A、B是括号匹配的字符串,则AB也是括号匹配的字符串。 例如:()、[]、([])、()()都是括号匹配的字符串,而][、[(])则不是。 现在对于输入的字符串,判断它是否是括号匹配的字符串。
输入:一行,为一个仅由“(”、“)”、“[”、“]”组成的非空字符串。
输出:一行,“YES”或“NO”,分别表示输入的字符串括号匹配或不匹配。
括号匹配的主要思路是
先看输入的是不是左括号,如果是的话则让其加入列表,如果不是且列表为空则让逻辑变量为0
如果列表不为空且输入的是右括号则判断和前一个左括号是否匹配,如果不匹配则逻辑变量为0,如果匹配就把与其匹配的左括号删除,进行下一步判断
最后结合state的值和列表是否为空判断括号是否匹配
a = input()
b = []
state =