题目描述
给定一个只含圆括号 (、) 与方括号 [、] 的字符串,判断它是否匹配。匹配的含义是:从左到右逐个看字符,遇到左括号就先记下来等待配对;遇到右括号时,它必须与最近一个还没配对的左括号配对,而且两者必须是同一类型(( 配 ),[ 配 ]);看完整个串时,每个左括号都必须已经配对。满足输出 yes,否则输出 no。
「最近一个还没配对的左括号」恰好就是栈顶——这正是栈最经典的应用。
输入格式
一行一个字符串 (,只含 (、)、[、])。
输出格式
一行,匹配输出 yes,不匹配输出 no。
样例
输入:
([])()
输出:
yes
每个右括号都能和它左侧最近的未配对同型左括号配对,最后全部配完。
数据范围
。只数两种括号各自的总数相等是不够的——([)] 数量全对,顺序却是交叉的。