给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
示例 1:
输入: “()”
输出: true
**示例 2:
输入: “()[]{}”
输出: true
示例 3:
输入: “(]”
输出: false
示例 4:
输入: “([)]”
输出: false
示例 5:
输入: “{[]}”
输出: true
思路:建立哈希表建立对应的关系,建立一个栈,我这里使用的是Deque
建立括号对应的哈希表
建议一个栈
然后遍历给定的字符串
然后,当我们每次遇到左括号的时候,我们就将它入栈
继续下去,当我们遇到右括号的时候
取出栈顶元素,看看是否匹配,如果不匹配,直接返回false
例如:{),{[)
当然,还有一种情况就是只有右括号,没有左括号
例如:{
这时候,栈中元素为空,所以也返回false
最后,判断是否为栈中的元素是否为0
因为没一个每遇到一个右括号都要出栈一个左括号,所以最后栈一定为空,如果不为空,表明有多余的括号没有match上,返回false