美文网首页
Leetcode-20:有效的括号

Leetcode-20:有效的括号

作者: 小北觅 | 来源:发表于2019-04-25 22:03 被阅读0次

    题目描述:

    给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。
    有效字符串需满足:
    左括号必须用相同类型的右括号闭合。
    左括号必须以正确的顺序闭合。
    注意空字符串可被认为是有效字符串。

    思路:
    一开始想到使用计数法记录左括号的次数,发现不可行,因为有三种括号而且右括号出现的次序也要匹配。最终使用栈来实现。比较巧的一个细节是创建了一个hashmap。见代码。

    class Solution {
        public boolean isValid(String s) {
            
            Stack<Character> stack = new Stack<>();
            HashMap<Character,Character> map = new HashMap<>();
            map.put(')','(');
            map.put('}','{');
            map.put(']','[');
            int len = s.length();
            for(int i=0;i<len; i++){
                if(s.charAt(i)=='(' || s.charAt(i)=='{' || s.charAt(i)=='[' )
                    stack.push(s.charAt(i));
                else if(stack.isEmpty())
                    return false;
                else if(stack.pop()!=map.get(s.charAt(i)))
                    return false;
            }
            if(stack.isEmpty())
                return true;
            
            return false;
        }
    }
    

    相关文章

      网友评论

          本文标题:Leetcode-20:有效的括号

          本文链接:https://www.haomeiwen.com/subject/rvitnqtx.html