zoukankan      html  css  js  c++  java
  • 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() ;
        }
    }
    苟有恒,何必三更眠五更起;最无益,莫过一日暴十日寒。
  • 相关阅读:
    红楼【建筑位置】
    红楼【人物关系】
    jenkins【shared-libraries】
    linux 安装mysql8.0 tar.xz
    MySQL 输入字符串对日期进行模糊查询
    解决kali linux 和 win10 双系统时间不一致问题
    linux idea桌面图标
    linux卸载openjdk11
    tar.xz解压
    pandas模块高性能使用方法总结
  • 原文地址:https://www.cnblogs.com/shaer/p/10859386.html
Copyright © 2011-2022 走看看