20 有效的括号对
- 创建一个空栈,用于存储左括号。
- 遍历输入的字符串。
- 如果当前字符是左括号('(','[','{'),将其推入栈中。
- 如果当前字符是右括号(')',']','}'),进行以下判断:
- a. 如果栈为空,则说明当前右括号没有匹配的左括号,返回 False。
- b. 如果栈顶的左括号与当前右括号不匹配(比如栈顶是'(',但当前右括号是']'),返回 False。
- c. 如果栈顶的左括号与当前右括号匹配,则将栈顶元素出栈,继续遍历下一个字符。
- 遍历完字符串后,如果栈为空,则说明所有括号都匹配,返回 True;否则,说明还有未匹配的左括号,返回 False。
class Solution(object):
def isValid(self, s):
"""
:type s: str
:rtype: bool
"""
stack = []
para_map = {'(': ')', '{': '}', '[': ']'}
for char in s:
if char in {'(', '{', '['}:
stack.append(char)
elif char in {')', '}', ']'}:
if len(stack) == 0 or para_map[stack.pop()] != char:
return False
return len(stack) == 0
1047 删除字符串中的相邻重复项
1)创建一个空栈,用来储存元素
2)遍历字符串S,并逐个压入栈中
3)如果当前浏览字符和前一项相同,则弹出栈顶的元素
4)重复这个过程,直到完成遍历
class Solution(object):
def removeDuplicates(self, s):
"""
:type s: str
:rtype: str
"""
stack = []
for char in s:
if stack and char == stack[-1]:
stack.pop(-1)
else:
stack.append(char)
return ''.join(stack)