题解 | #有效括号序列#

有效括号序列

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

使用栈进行匹配,当栈顶元素为'('时,直接入栈,否则检查是否存在次栈顶元素,若不存在返回false。若存在次栈顶元素('(')且和栈顶元素(')')匹配,则将次栈顶元素弹出(与栈顶元素一同消去)。循环,直至遍历所有字符,当栈空时返回true,否则返回false。

import java.util.*;


public class Solution {
    /**
     *
     * @param s string字符串
     * @return bool布尔型
     */
    public boolean isValid (String s) {
        // write code here
        if (s.length() <= 1) return false;
        Stack<Character> stack = new Stack<Character>(); // 用于匹配最近成对的字符
        int i = 0;
        while (i < s.length()) { // 栈非空,说明还有尚未匹配的字符
            Character top = s.charAt(i++); // 当前元素
            if (top == ')' || top == ']' || top == '}') {
                if (stack.isEmpty()) return false; // 栈空,无法匹配
                if ((top == ')' && stack.peek() == '(') || (top == ']' && stack.peek() == '[') || (top == '}' && stack.peek() == '{') ) { // 匹配成功
                    stack.pop(); // 消除
                }
            } else {
                stack.push(top); // 入栈,等待后续匹配
            }
        }
        return stack.isEmpty(); // 栈空则匹配成功,否则匹配失败
    }
}
#括号匹配#
全部评论

相关推荐

在笔试的大西瓜很矫健:校招数分不用想了,这经历和学历都不够用,大厂更别想,初筛都过不了,说点不好听的小厂数分都进不去(小厂也是假数分),要两个对口实习+3个项目(或者3+2),而且要有含金量才能补一点你的学历劣势。 建议刷实习,社招找数分,校招看运气,能入行业就行,可以运营转数分
点赞 评论 收藏
分享
owwhy:难,技术栈在嵌入式这块显得非常浅,并且简历有大问题。教育经历浓缩成两行就行了,写什么主修课程,说的不好听这块没人在意,自我评价删了,项目写详细点,最终简历缩成一页。相关技能怎么说呢,有点差了,还写成这么多行
投了多少份简历才上岸
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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