leetcode-20-有效的括号

Posted nxzblogs

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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);
    

 

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

python刷LeetCode:20. 有效的括号

[LeetCode]20 Valid Parentheses 有效的括号

LeetCode #20 有效括号

leetcode-20-有效的括号

[JavaScript 刷题] 栈 - 有效的括号, leetcode 20

[JavaScript 刷题] 栈 - 有效的括号, leetcode 20