当前位置: 首页 > 科技观察

LeetCode的有效括号

时间:2023-03-12 16:39:31 科技观察

前言我们社区将继续整理谷一(Netflix成长黑客,《iOS 面试之道》作者,ACE职业健身教练。微博:@古谦道长[1])的Swift算法题解法进入文字版方便大家学习阅读。到目前为止,我们已经更新了19期的LeetCode算法。我们会保持更新时间和进度(周一、周三、周五上午9:00发布)。每期内容不多。希望大家在上班的路上读一读,积累久了会有很大的提升。不积步,无以至万里;不积小流,则不成江海。Swift社区将陪伴您一路前行。难度级别:简单1.描述给定一个仅由'(',')','{','}','[',']'组成的字符串s,判断该字符串是否有效。一个有效的字符串需要满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。2.示例示例1输入:s="()"输出:true示例2输入:s="()[]{}"输出:true示例3输入:s="(]"输出:false示例4输入:s="([)]"输出:false示例5输入:s="{[]}"输出:true约束:1<=s.length<=104s仅由括号'()[]{}'3组成.AnswerclassValidParentheses{funcisValid(_s:String)->Bool{varstack=[Character]()forcharins{ifchar=="("||char=="["||char=="{"{stack.append(char)}elseifchar==")"{guardstack.count!=0&&stack.removeLast()=="("else{returnfalse}}elseifchar=="]"{guardstack.count!=0&&stack.removeLast()=="["else{returnfalse}}elseifchar=="}"{guardstack.count!=0&&stack.removeLast()=="{"else{returnfalse}}}returnstack.isEmpty}}主要思想:利用栈检查peek左大括号是否对应当前右大括号[3]练习参考资料[1]@古许道长:https://img.ydisp.cn/news/20220903/vrdtxae40siLeetCode-Swift:https://github.com/soapyigu/LeetCode-Swift[3]LeetCode:https://leetcode.com/problems/valid-parentheses