首页 > 其他 > 详细

leetcode-20-有效的括号

时间:2019-08-03 00:36:27      阅读:67      评论:0      收藏:0      [点我收藏+]

问题:

技术分享图片

技术分享图片

 

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);
    }
}

 

leetcode-20-有效的括号

原文:https://www.cnblogs.com/nxzblogs/p/11276685.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!