Hot10020. 有效的括号

Posted 王六六的IT日常

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hot10020. 有效的括号相关的知识,希望对你有一定的参考价值。

20. 有效的括号

  • 使用map
	private static final Map<Character,Character> map = new HashMap<Character,Character>()
        put('',''); put('[',']'); put('(',')'); put('?','?');
    ;
	public boolean isValid(String s) 
        if(s.length() > 0 && !map.containsKey(s.charAt(0))) return false;
        LinkedList<Character> stack = new LinkedList<Character>()  add('?'); ;
        for(Character c : s.toCharArray())
            if(map.containsKey(c)) stack.addLast(c);
            else if(map.get(stack.removeLast()) != c) return false;
        
        return stack.size() == 1;
	
  • 不使用map,用栈
class Solution 
    public boolean isValid(String s) 
        if(s.isEmpty())
            return true;
        
            
        Stack<Character> stack=new Stack<>();
        for(char c:s.toCharArray())
            if(c=='(')
                stack.push(')');
            else if(c=='')
                stack.push('');
            else if(c=='[')
                stack.push(']');
            else if(stack.empty()||c!=stack.pop())
                return false;
        
        return stack.empty();

    

  • 双队列
class Solution 
    public boolean isValid(String s) 
        Deque<Character> deque = new LinkedList<>();
        char ch;
        for (int i = 0; i < s.length(); i++) 
            ch = s.charAt(i);
            //碰到左括号,就把相应的右括号入栈
            if (ch == '(') 
                deque.push(')');
            else if (ch == '') 
                deque.push('');
            else if (ch == '[') 
                deque.push(']');
             else if (deque.isEmpty() || deque.peek() != ch) 
                return false;
            else //如果是右括号判断是否和栈顶元素匹配
                deque.pop();
            
        
        //最后判断栈中元素是否匹配
        return deque.isEmpty();
    

在迭代过程中,提前发现不符合的括号并且返回,提升算法效率。

以上是关于Hot10020. 有效的括号的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode Hot 100 --- 最长有效括号(java详细注解)

#yyds干货盘点# LeetCode 热题 HOT 100:最长有效括号

刷题篇--热题HOT 10-20

Hot10022. 括号生成

LeetCoed热题 HOT 汇总

LeetCoed热题 HOT 汇总