题目:
Given a string s containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid.
An input string is valid if:
Open brackets must be closed by the same type of brackets.
Open brackets must be closed in the correct order.
给定一个有大中小括号的字串,检查它们是否两两相对
这题是明显的stack题型,而我所实作的程式码如下
class Solution: def isValid(self, s: str) -> bool: d={"(":0,")":"(","[":0,"]":"[","{":0,"}":"{"} #dictionary纪录对应值 l=[] for i in range(len(s)): if len(l)==0: l.append(s[i]) else: if d[s[i]]==l[-1]: l.pop() else: l.append(s[i]) return l==[]
让字串堆叠入一个list,堆叠过程中一面确认字串尾端是否为欲堆入值的对应值,如果是就一同取出
以"{ { ( { } ) } }"为例,执行过程 list 变动如下:
{ --> {{ -->{{( --> {{({ --> {{({} --> {{( --> {{() --> {{ --> {{} --> { --> {} --> None
由此可知,如果最后 list 空无一物的话就表示括号们两两相对,反之则否
注意:如 list 无物, l[-1] 不存在,因此需多加个条件判断式在无值时 append
最后执行时间30ms(faster than 94.29%)
那我们下题见