首页 > 编程知识 正文

leetcode有效的括号(leetcode总共多少题)

时间:2023-05-04 04:21:54 阅读:75544 作者:4213

关于括号匹配问题,一提到这个问题,你就会想到数据结构堆栈。 虽然对括号匹配也不熟悉,但今天打印这个问题花了很多时间来回忆其中的细节,特别是在用python再现时。

让我们先来看看问题的说明:

genastringcontainingjustthecharacters ' '、'、'、' { '、' } '、' [' and ']、determineiftheinputstringisvalid .

An input string is valid if:

openbracketsmustbeclosedbythesametypeofbrackets.openbracketsmustbeclosedinthecorrectorder.notethatanemptystringisalsoconsion

Example 1:

Input:' () ' http://www.Sina.com/true 3358 www.Sina.com /

Output:' () [ ] { } ' http://www.Sina.com/true 3358 www.Sina.com /

3358 www.Sina.com/' () ' http://www.Sina.com/false 3358 www.Sina.com /

3358 www.Sina.com/' [ ] ' http://www.Sina.com/false 3358 www.Sina.com /

用http://www.Sina.com/' { [ ] } ' http://www.Sina.com/true python中名为堆栈的数据结构实现。 具体来说,用list类型达到最终效果。 首先,了解list使用堆栈实现的详细信息。

list的append方法相当于推送操作,pop[]方法相当于推送操作。 我个人不建议使用名为remove[-1]的方法,因为列表元素的顺序会发生变化,如下所示:

l=['[,''',',' []]

打印(l ) )。

l .移除(l [-1 ] ) ) ) )。

打印(l ) )。

运行上面的代码时,您会看到列表l中前两个元素的位置发生了变化,结果会出错

接下来,阐述用堆栈数据结构解决这个问题的想法。

左括号(()、()、()、()、()、()、()、) ) ) ),输入时进入堆栈,进入右括号时观察堆栈顶部元素是否为相应的左括号,如果是,将堆栈顶部元素从堆栈中抽出最后检查堆栈是否为空,否则报告错误。

接下来贴上我的代码吧:

----:编码: utf-8---- class解决方案: defis valid (self, s 65: ' ' : types : str : rtype : bool ' ' l=[ ] foriinrange (len (s ) ) :ifs ) I=' : l=' [ ]=' { ' 3360 l.append [ s [ I ] ] print [ l ] ifs [ I ]=' '=' ' ' 3360 returnfalseelse 3360 l.pop (print ) l ) ifs(I )=' [ ' : returnfalseelse 3360 l.pop (print ) l ) ifs(I )='}':iflen(l )==03: returnfalseifl (-1 )='=0: returnfalseelse 3360 returntrueif _ _ name _==' _ main _ ' : s=solution (obj=input (' ) ppi输入的字符串

下面是执行结果的图。

好的,就此结束! 感谢您的观看。

2018.12.13 2:07 am

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。