1. 有效的括号
1.1 题目链接
https://leetcode-cn.com/problems/valid-parentheses/submissions/
1.2 题目描述
1.3 解题思路与代码
先判断输入是否符合要求:长度为偶数,再结合栈(这里采用顺序栈)来判断,满足有效括号的出栈,不=不满足有效括号要求的入栈,直到遍历完整个s字符串为止。根据top指针的数值来判断整个字符串是否为有戏括号。
class Solution:
def isValid(self, s: str) -> bool:
if len(s)==0:
return True
elif len(s)%2!=0:
return False
else:
S_stack = [None for x in range(0,len(s))]
s_dict={'(':')','[':']','{':'}',')':'False',']':'False','}':'False'}
s_top=-1
i=0
while i<len(s):
if S_stack == [None]*len(s):
S_stack[s_top+1]=s[i]
s_top+=1
else:
if s_dict[S_stack[s_top]]!=s[i]:
if s_dict[S_stack[s_top]]=='False':
return False
S_stack[s_top+1]=s[i]
s_top+=1
else:
S_stack[s_top]=None
s_top-=1
i+=1
if s_top>=0:
return False
return True
2. 最小栈
class MinStack:
def __init__(self):
"""
initialize your data structure here.
"""
self.s = [None]
self.top_ind = -1
def push(self, x: int) -> None:
self.s.append(None)
self.s[self.top_ind+1]=x
self.top_ind+=1
def pop(self) -> None:
self.s[self.top_ind]=None
self.top_ind-=1
def top(self) -> int:
return self.s[self.top_ind]
def getMin(self) -> int:
min_value=self.s[self.top_ind]
ind=self.top_ind-1
while ind>-1:
if min_value> self.s[ind]:
min_value=self.s[ind]
ind-=1
return min_value
# Your MinStack object will be instantiated and called as such:
# obj = MinStack()
# obj.push(x)
# obj.pop()
# param_3 = obj.top()
# param_4 = obj.getMin()
执行结果超出时间限制!!!!