leetcode 20. 有效的括号

一、题目

给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。

有效字符串需满足:

左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。

示例 1:
输入:s = "()"
输出:true

二、解法

go:

func isValid(s string) bool {
    stk:=make([]byte,0)
    n:=len(s)
    m:=map[byte]byte{
        ')':'(',
        ']':'[',
        '}':'{',
    }
    for i:=0;i<n;i++{
        if _,ok:=m[s[i]];ok{
            if len(stk)==0||stk[len(stk)-1]!=m[s[i]]{
                return false
            }
            stk=stk[:len(stk)-1]
        }else{
            stk=append(stk,s[i])
        }
    }
    return len(stk)==0
}

java:
不用map,在入栈的时候改变一下入栈符号即可

class Solution {
    public boolean isValid(String s) {
        Deque<Character> stack=new ArrayDeque<>();
        for(int i=0;i<s.length();i++){
            char ch=s.charAt(i);
            if(ch=='('){
                stack.push(')');
            }else if(ch=='['){
                stack.push(']');
            }else if(ch=='{'){
                stack.push('}');
            }else if(stack.isEmpty()||stack.peek()!=ch){
                return false;
            }else{
                stack.poll();
            }
        }
        return stack.isEmpty();
    }
}
posted @ 2022-01-18 15:57  livingsu  阅读(32)  评论(0)    收藏  举报