Python3 효과적인 괄호 문제
원제 https://leetcode-cn.com/problems/valid-parentheses/
단지 소정 '(', ')'문자열이 포함 "{", "}", "[", "]", 및 문자열이 유효한지 여부를 결정한다.
유효한 문자열을 충족해야합니다 :
왼쪽 브래킷은 동일한 유형의 닫는 괄호에 의해 폐쇄해야합니다.
왼쪽 괄호가 올바른 순서로 닫아야합니다.
빈 문자열을 참고 유효한 문자열로 간주 될 수있다.
예 1 :
输入: "()"
输出: true
예 2 :
输入: "()[]{}"
输出: true
예 3 :
输入: "(]"
输出: false
예 4 :
输入: "([)]"
输出: false
예 5 :
输入: "{[]}"
输出: true
문제 해결 :
class Solution:
def isValid(self, s: str) -> bool:
stack = [] # 只存未被配对的( [ { 遇到配对的直接出栈
n = len(s)
for i in range(n):
w = s[i]
if w == ')':
length = len(stack)
if length == 0 or stack[length - 1] != '(':
return False
else:
stack.pop()
elif w == '}':
length = len(stack)
if length == 0 or stack[length - 1] != '{':
return False
else:
stack.pop()
elif w == ']':
length = len(stack)
if length == 0 or stack[length - 1] != '[':
return False
else:
stack.pop()
elif w == '(' or w == '{' or w == '[':
stack.append(w)
return len(stack) == 0 # 都配对了则栈为空 如果栈不为空则说明未配对