有效的括号序列——算法面试刷题4(for google),考察stack
给定一个字符串所表示的括号序列,包含以下字符: '(', ')'
, '{'
, '}'
, '['
and ']'
, 判定是否是有效的括号序列。
括号必须依照 "()"
顺序表示, "()[]{}"
是有效的括号,但 "([)]"
则是无效的括号。
您在真实的面试中是否遇到过这个题?
样例
样例 1:
输入:"([)]"
输出:False
样例 2:
输入:"()[]{}"
输出:True
挑战
O(n)的时间,n 为括号的个数。
我的代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | class Solution: """ @param s: A string @return: whether the string is a valid parentheses """ def isValidParentheses( self , s): # write your code here match_par = { "(" : ")" , "[" : "]" , "{" : "}" } l_par = set (match_par.keys()) r_par = set (match_par.values()) stack = [] for c in s: if c in l_par: stack.append(c) elif c in r_par: if not stack or match_par[stack.pop()] ! = c: return False else : pass return len (stack) = = 0 |
参考代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | class Solution( object ): ''' 题意:输入一个只包含括号的字符串,判断括号是否匹配 模拟堆栈,读到左括号压栈,读到右括号判断栈顶括号是否匹配 ''' def isValidParentheses( self , s): stack = [] for ch in s: # 压栈 if ch = = '{' or ch = = '[' or ch = = '(' : stack.append(ch) else : # 栈需非空 if not stack: return False # 判断栈顶是否匹配 if ch = = ']' and stack[ - 1 ] ! = '[' or ch = = ')' and stack[ - 1 ] ! = '(' or ch = = '}' and stack[ - 1 ] ! = '{' : return False # 弹栈 stack.pop() return not stack |
值得学习的地方:
return not stack
标签:
算法
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
2018-04-20 DNS 负载均衡
2017-04-20 美国诚实签经验——我们准备了XX万的存款,这足以应付我预算表中涉及的所有开支,如果有意外情况我们的资金不足以应付,我们双方的父母也会支援我们,绝对不会占用美国的任何福利
2017-04-20 美国诚实签经验——户口本!!!
2017-04-20 美国诚实签经验——是不是户籍和常住作业地在一起?是不是有居住证?明白居住证信息吗?英语超卓,应变能力强,有幽默感 10分
2017-04-20 美国诚实签经验——中英文行程单、往返机票、用英语面试的申请者通过率>用中文面试的申请者的通过率、一直保持着微笑,看上去很自信,也很诚恳、户口簿带上最好
2017-04-20 重新定义数据库历史的时刻——时间序列数据库Schwartz认为InfluxDB最有前途,Elasticsearch也不错