20. Valid Parentheses(用栈实现括号匹配)

Given a string containing just the characters ‘(‘‘)‘‘{‘‘}‘‘[‘ and ‘]‘, determine if the input string is valid.

An input string is valid if:

  1. Open brackets must be closed by the same type of brackets.
  2. Open brackets must be closed in the correct order.

Note that an empty string is also considered valid.

Example 1:

Input: "()"
Output: true

Example 2:

Input: "()[]{}"
Output: true

Example 3:

Input: "(]"
Output: false

Example 4:

Input: "([)]"
Output: false

Example 5:

Input: "{[]}"
Output: true

方法一:hashmap+栈
class Solution {
    public static boolean isValid(String s) {
        HashMap<Character,Character> map=new HashMap<Character,Character>();
        Stack<Character> stack=new Stack<Character>();
        map.put(‘)‘,‘(‘);
        map.put(‘]‘,‘[‘);
        map.put(‘}‘,‘{‘);
        int N=s.length();
        char [] nums=s.toCharArray();
        for(int i=0;i<N;i++){
            if(!stack.isEmpty() && map.get(nums[i])==stack.peek()){
                stack.pop();
            }else{
                stack.push(nums[i]);
            }

        }
        return stack.isEmpty() ? true :false;
    }
}

方法二:栈

class Solution {
    public static boolean isValid(String s) {
        Stack<Character> stack=new Stack<Character>();
        int N=s.length();
        char [] nums=s.toCharArray();
        for(int i=0;i<N;i++){
            if(nums[i]==‘(‘||nums[i]==‘[‘||nums[i]==‘{‘){
                stack.push(nums[i]);
            }else{
                if(stack.isEmpty()){
                    return false;
                }

                int cr=stack.pop();
                boolean a= cr==‘(‘ && nums[i]!=‘)‘;
                boolean b= cr==‘[‘ && nums[i]!=‘]‘;
                boolean c= cr==‘{‘ && nums[i]!=‘}‘;
                if(a||b||c){
                    return false;
                }
            }

        }
        return stack.isEmpty() ;
    }
}

原文地址:https://www.cnblogs.com/shaer/p/10859386.html

时间: 2024-10-08 08:40:36

20. Valid Parentheses(用栈实现括号匹配)的相关文章

leetcode题解:Valid Parentheses(栈的应用-括号匹配)

题目: Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid. The brackets must close in the correct order, "()" and "()[]{}" are all valid but "(]" and "([)]&

20. Valid Parentheses括号匹配

20 Valid Parentheses Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid. The brackets must close in the correct order, "()" and "()[]{}" are all valid but "(]"

[LeetCode]20 Valid Parentheses 有效的括号

[LeetCode]20 Valid Parentheses 有效的括号 Description Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid. An input string is valid if: Open brackets must be closed by the same type of brac

leetCode 20. Valid Parentheses 字符串

20. Valid Parentheses Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid. The brackets must close in the correct order, "()" and "()[]{}" are all valid but "(]&quo

LeetCode解题笔记 - 20. Valid Parentheses

这星期听别人说在做LeetCode,让他分享一题来看看.试了感觉挺有意思,可以培养自己的思路,还能方便的查看优秀的解决方案.准备自己也开始. 解决方案通常有多种多样,我觉得把自己的解决思路记录下来,阶段性查看,一定能对自己有帮助. 这是我做的第一题,所以记录也从这题开始,之后尽力以简短的说明,描述出思路,方便以后能回顾到简介明了的记录. 20. Valid Parentheses Given a string containing just the characters '(', ')', '{

刷题20. Valid Parentheses

一.题目说明 这个题目是20. Valid Parentheses,简单来说就是括号匹配.在学数据结构的时候,用栈可以解决.题目难度是Medium. 二.我的解答 栈涉及的内容不多,push.pop.top,. 我总共提交了3次: 第1次:Runtime Error,错误原因在于pop的时候,未判断栈是否为空. 第2次:Wrong Answer,这个是"眼大"疏忽导致的,我写的时候只考虑了()[]未考虑{}. 第3次:终于正确了,性能还可以: Runtime: 0 ms, faster

20. Valid Parentheses【leetcode】

20. Valid Parentheses Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid. The brackets must close in the correct order, "()" and "()[]{}" are all valid but "(]&quo

20. Valid Parentheses(js)

20. Valid Parentheses Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid. An input string is valid if: Open brackets must be closed by the same type of brackets. Open brackets must be

LeetCode 20 Valid Parentheses 括号匹配问题

题目: Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid. The brackets must close in the correct order, "()" and "()[]{}" are all valid but "(]" and "([)]&