题目
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
每个右括号都有一个对应的相同类型的左括号。
示例 1:
输入:s = "()"
输出:true
示例 2:
输入:s = "()[]{}"
输出:true
示例 3:
输入:s = "(]"
输出:false
提示:
1 <= s.length <= 104
s 仅由括号 '()[]{}' 组成
思路
详情看力扣精选解题答案:有效的括号(辅助栈法,极简+图解)
看到匹配括号类型的题目,首先应该想到用栈解决。哈希表用来存储括号字典。
栈的特点是“先进后出”,对栈的操作有入栈(push)、出栈(pop)。在本题中,遇到左括号时入栈,遇到匹配的右括号出栈,若遍历完字符串后stack为空,则返回true,否则返回false。
初始化HashMap的方法:
Map<Character, Character> paris = new HashMap<>() {
{
put(')','(');
put(']','[');