小白水平理解面试经典题目LeetCode 20. Valid Parentheses【栈】

20.有效括号

小白渣翻译

给定一个仅包含字符 '(' 、 ')' 、 '{' 、 '}' 、 '[' 和 ']' ,判断输入字符串是否有效。

输入字符串在以下情况下有效:

左括号必须由相同类型的括号封闭。

左括号必须按正确的顺序关闭。

每个右括号都有一个对应的相同类型的左括号。

例子

小白理解

那么这种题目一上来看,其实题目描述的还是很清晰了,输入是一个String类型,返回值是布尔类型。基本就是我们熟悉的集中大,中,小括号的匹配,没有太多的坑。只不过我们需要去了解Stack这种数据结构更适合这道题目。

时候黑长直女神过来问:小白,你这题怎么思考的啊?是用字符串暴力算法来对比吗?

小白内心镇定:这题,白月光啊,哦,不对,小美,咱得用栈啊,这题才能做。

白月光:奥,那这个栈有什么特点呢?

小白:栈是一种先入后出的数据结构,非常适合处理括号匹配问题。

白月光:那具体怎么操作?

小白:我们可以从字符串的第一个字符开始遍历。如果遇到左括号,则将其压入栈中;

第二步,如果遇到右括号,则检查栈顶元素是否与当前右括号匹配。如果匹配,则弹出栈顶元素;如果不匹配,则说明字符串是非法的。

小美:小伙子,可以啊,这不仅讲解感人,数据结构也有俩下子!

真正面试环节

面试官:你可以解答这道"杨辉三角"的题目吗,来看看你对数学的理解

小白:嘿嘿,这不巧了么这不是

java 复制代码
    public static boolean isValid(String s) {
        // 创建一个空栈来存储左括号
        Stack<Character> stack = new Stack<>();

        for (char c : s.toCharArray()) {
			
			// 如果当前字符是左括号,则将其压入栈中
            if (c == '(' || c == '[' || c == '{') {
                stack.push(c);
            } else if (c == ')' || c == ']' || c == '}') { //如果当前字符是右括号,则检查栈顶元素是否与当前右括号匹配。
                
                // 如果栈为空或栈顶元素与当前右括号不匹配,则说明字符串是非法的。
                if (stack.isEmpty() || stack.pop() != c) {
                    return false;
                }
            }
        }
        return stack.isEmpty();
    }

小明:OK,完事儿,等着面试官来表扬自己吧。他肯定会说:小子,你是个好手!工位都给你准备好了,工资你说了算。

面试官:矮油,不错啊,我就是试试你,下边还有一道题接着来。

小明OS:今年这个找工市场,人言洛阳花似锦,偏我来时不逢春。。。不是,这面试官好体力啊!

编码道路漫漫,只要先看脚下的路,徐徐前进即可。

相关推荐
YuTaoShao24 分钟前
【LeetCode 每日一题】1458. 两个子序列的最大点积——(解法三)状态压缩
算法·leetcode·职场和发展
CCPC不拿奖不改名26 分钟前
网络与API:从HTTP协议视角理解网络分层原理+面试习题
开发语言·网络·python·网络协议·学习·http·面试
程序员飞哥33 分钟前
几年没面试,这次真的被打醒了!
java·面试
橘颂TA1 小时前
【剑斩OFFER】算法的暴力美学——leetCode 946 题:验证栈序列
c++·算法·leetcode·职场和发展·结构与算法
wen__xvn1 小时前
力扣第 484 场周赛
算法·leetcode·职场和发展
YuTaoShao1 小时前
【LeetCode 每日一题】865. 具有所有最深节点的最小子树——(解法一)自顶向下
算法·leetcode·职场和发展
乌暮1 小时前
JavaEE初阶---《JUC 并发编程完全指南:组件用法、原理剖析与面试应答》
java·开发语言·后端·学习·面试·java-ee
2301_800895101 小时前
hh的蓝桥杯每日一题--拔河
职场和发展·蓝桥杯
CCPC不拿奖不改名1 小时前
计算机网络:电脑访问网站的完整流程详解+面试习题
开发语言·python·学习·计算机网络·面试·职场和发展
鹏程十八少2 小时前
破解Android悬浮窗遮挡无障碍服务难题:我在可见即可说上踩过的坑
android·前端·面试