牛课题霸每日一题NC52题解Java8版本


题目描述

给出一个仅包含字符'(',')','{','}','['和']',的字符串,判断给出的字符串是否是合法的括号序列
括号必须以正确的顺序关闭,"()"和"()[]{}"都是合法的括号序列,但"(]"和"([)]"不合法。

解题思路

括号匹配问题考虑栈结构来实现。合法的串左右括号都是成对出现,或者嵌套出现。
使用栈存储左括号,当遇到左括号则入栈,遇到右括号则出栈,检测弹出的左括号是否与当前右括号匹配,如果不匹配则不合法,如果匹配则继续检测下一个括号。

import java.util.*;


public class Solution {
    /**
     * 
     * @param s string字符串 
     * @return bool布尔型
     */
    public boolean isValid (String s) {
        // write code here
        Deque<Character> stack = new LinkedList<>();
        for(char ch: s.toCharArray()){
            if(ch == '(' || ch == '{' || ch == '['){
                stack.offerLast(ch);
            }else{
                Character top = stack.pollLast();
                if(top == null){
                    return false;
                }
                if((ch == '}' && top == '{') || 
                   (ch == ']' && top == '[') || 
                   (ch == ')' && top == '(')){
                    continue;
                }else{
                    return false;
                }
            }
        }
        return stack.isEmpty();
    }
}

#牛客题霸##题解#
全部评论
这里的容器最好使用ArrayDeque,相应的入栈出栈接口为push和pop
1 回复 分享
发布于 2020-12-09 23:18

相关推荐

浙江华为面经一共三面,每一面之间大概隔一星期,hr小姐姐给安排时间☐&nbsp;一面业务面自我介绍,关于项目具体讲一下,比赛有c++和c&nbsp;指针是什么回事/数组和链表区别/堆和栈区别,网络安全的几种注入原理和防御手段,对云计算的了解,用英语描述图片(准备半分钟&nbsp;实际上hr很好,让准备了一分钟)&nbsp;描述一分钟,英语问问题&nbsp;(图片是雪天&nbsp;很多汽车交通拥堵)如果你在汽车上&nbsp;你会干什么/如果你急着上班&nbsp;怎么办/喜欢电影&nbsp;多长时间去一次/自己去还是和别人一块去/和别人一块去的原因,讲ppt(准备5-10分钟,讲10分钟左右)(ppt关于云计算概念),反问问题☐&nbsp;二面素质面自我介绍,家庭成员,意向城市,为什么是这些地方,水土不服怎么办,有无offer,自己分析没有的原因是什么,其他投递岗位是什么,为什么投这个岗位,为什么没准备考研,兴趣爱好,特长,为什么是最擅长的/怎么培养的他,为什么感兴趣,想申请海外高校吗,之前做过家教/支教类的吗,最大的心得是什么,用简短的话来说说对这个培训/教育的看法,培训过程中如果你遇到不会的怎么处理,培训过程中如果你遇到拉肚子等等生理情况怎么办,工作薪酬期望(月薪和年薪)☐&nbsp;三面总经理面一分钟自我介绍,对岗位的理解,培训的本质是什么,应聘岗位需要具备的能力,通信原理学过吗,香农原理&nbsp;公式具体是什么,信息安全的三要素,TCP/IP第四层,电磁场学过吗,学过什么语言,C语言写一个计时程序多少行,开头结尾是什么,四种排序有哪些,职业规划是什么,兄弟姐妹几个,家里父母的工作,有没有对象,意向城市
查看44道真题和解析
点赞 评论 收藏
分享
查看3道真题和解析 小米求职进展汇总
点赞 评论 收藏
分享
评论
3
2
分享
牛客网
牛客企业服务