题解 | #有效括号序列#

有效括号序列

https://www.nowcoder.com/practice/37548e94a270412c8b9fb85643c8ccc2

import java.util.*;


public class Solution {
    /**
     * 
     * @param s string字符串 
     * @return bool布尔型
     */
    public boolean isValid (String s) {
        // write code here
        // 括号是否合法,直接想到了用栈来处理
        Stack<Character> stack = new Stack<>();
        for(int i = 0;i<s.length();i++){
            char ch = s.charAt(i);
            if(ch =='(' || ch =='[' || ch =='{'){
                stack.push(ch);
            }else{
                if(stack.isEmpty()){
                    // 开始出现的是右括号
                    return false;
                }
                char left = stack.pop();
                if(findLeft(ch) != left){
                    return false;
                }
            }
        }
        if(!stack.isEmpty()){
            // 左括号比右括号多
            return false;
        }
        return true;
    }
    public char findLeft(char ch){
        if(ch ==')'){
            return '(';
        }
        if(ch =='}'){
            return '{';
        }
        if(ch ==']'){
            return '[';
        }
        return ' ';
    }
}

思路,括号匹配想到用Stack

只让左括号进栈,遇到右括号,弹出栈顶,看是否匹配,不匹配false

一开始遇到右括号,也就是stack是空的,直接false

结束了,栈里面还有元素,也要false

全部评论

相关推荐

2024-12-23 11:36
中南大学 Java
点赞 评论 收藏
分享
饼子吃到撑:海面这个是,投了一般都给的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务