zoukankan      html  css  js  c++  java
  • leetcode-20-有效的括号

    问题:

    package com.example.demo;
    
    import java.util.HashMap;
    import java.util.Map;
    import java.util.Stack;
    
    public class Test20 {
    
        /**
         * 有效括号
         * 利用栈数据结构,遇到{ [ ( 等左括号,就入栈,遇到右括号就将栈中的一个元素取出,进行比较
         * 符合则继续判断下一个
         */
        public boolean isValid(String s) {
    
            Map<String, String> map = new HashMap<>();
            map.put("(", ")");
            map.put("{", "}");
            map.put("[", "]");
    
            Stack<String> stack = new Stack<>();
    
            for (int i = 0; i < s.length(); i++) {
                String sub = s.substring(i, i + 1);
                if ("(,{,[,".contains(sub)) {
                    stack.push(sub);
                } else {
                    // 如果stack中已经没有元素了 则改一个固定值,该固定值不属于括号的一种,则比较的时候会返回false
                    String pop = stack.isEmpty() ? "#" : stack.pop();
                    if (!sub.equals(map.get(pop))) {
                        return false;
                    }
                }
            }
            // 根据栈中时候仍有元素来判断时候已经匹配完成
            return stack.isEmpty();
        }
    
        public static void main(String[] args) {
            Test20 t = new Test20();
            boolean valid = t.isValid("()()(]){}[]");
            System.out.println(valid);
        }
    }
  • 相关阅读:
    java第九次作业
    java第八次作业
    java第七次作业
    java第六次作业
    java第五次作业
    java第四次作业
    java第三次作业
    java第二次作业
    java第一次作业
    Javascript设计模式-----装饰者模式
  • 原文地址:https://www.cnblogs.com/nxzblogs/p/11276685.html
Copyright © 2011-2022 走看看