乐趣区

关于leetcode个人解题总结:刷题4有效的括号

Leetcode: 20 无效的括号

关键点:

遍历到左括号 ”{“,”[“,”(“ 时,入栈;遍历到右括号 ”}”,”]”,”)” 时,判断栈顶是否为相应的左括号,如果是,则将栈顶元素出栈,如果不是或栈为空,则返回 false。遍历字符完之后还要判断栈是否为空,目标是避免只有左括号,如“[[,{[”,如栈为空,则返回 true,否则返回 false。代码如下:

class Solution {Stack<Character> st = new Stack<Character>();
    HashMap<Character,Character> map = new HashMap<Character,Character>();

    public boolean isValid(String s) {// 留神: '}':'{', 而不是 '{':'}'
        map.put('}','{');
        map.put(')','(');
        map.put(']','[');

        for(char ch:s.toCharArray()){if(map.containsKey(ch)){if(!st.isEmpty() && st.peek() == map.get(ch))
                    st.pop();
                else
                    return false;
            }
            else
                st.push(ch);
        }
        
        // 避免只有左括号,如”[[,{[”return st.isEmpty();}
}
退出移动版