题解 | #有效括号序列#

有效括号序列

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
        int len = s.length();
        if (len == 0) return true;
        if (len == 1) return false;
        if (len % 2 != 0) return false;
        Stack<Character> stack = new Stack<Character>();
        for (int i = 0; i < len; i++) {
            Character c = s.charAt(i);
            if (!isValid(c)) return false;
            if (isLeft(c)) {
                stack.push(c);
            } else {
                if(stack.isEmpty()) return false;
                //看最近的一个是否与它相配
                if(!isPair(c, stack.pop())){
                    return false;
                }
            }
        }
        return stack.isEmpty();
    }

    private boolean isValid(Character c) {
        return c == '(' || c == ')' || c == '{' || c == '}' || c == '[' || c == ']';
    }

    private boolean isLeft(Character c) {
        return c == '('  || c == '{'  || c == '[' ;
    }

    private boolean isPair(Character c, Character d) {
        if (c == ')'  ) {
            return d == '(';
        } else if (c == '}'  ) {
            return d == '{';
        } else {
            return d == '[';
        }
    }

}

全部评论

相关推荐

2025-12-28 16:32
重庆邮电大学 Java
程序员花海:1.技能放最后,来面试默认你都会,技能没啥用 2.实习写的看起来没啥含金量,多读读部门文档,包装下 接LLM这个没含金量 也不要用重构这种 不会给实习生做的 3.抽奖这个还是Demo项目,实际在公司里面要考虑策略,满减,触发点,触发规则 库存 之类的,不是这个项目这么简单 4.教育背景提前,格式为 教育背景 实习 项目 技能 自我评价
简历被挂麻了,求建议
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务