Leet code 20. Valid Parentheses
문제
문제 풀이 방법
- stack을 이용
class Solution:
def isValid(self, s: str) -> bool:
스택을 이용 안했을때 코드 엄청 복잡하고 틀림..
# answer = []
# if len(s) == 2:
# if s[0] == '(' and s[1] == ')':
# return True
# if s[0] == '[' and s[1] == ']':
# return True
# if s[0] == '{' and s[1] == '}':
# return True
# else:
# return False
# for i in range(len(s)):
# if i != len(s)-1:
# next = s[i+1]
# if s[i] == '(' and next == ")":
# answer.append(s[i])
# answer.append(next)
# elif s[i] == '[' and next == "]":
# answer.append(s[i])
# answer.append(next)
# elif s[i] == '{' and next == "}":
# answer.append(s[i])
# answer.append(next)
# if s[i] == s[len(s)-1] and i != len(s)-2 and i != len(s)-1:
# answer.append(s[i])
# answer.append(s[len(s)-1])
# print(answer)
# if len(answer) % 2 == 0 and len(answer) != 0 and len(answer) == len(s):
# return True
# else:
# return False
스택을 이용한 코드
lst = ['{([']
stack = []
for i in s:
# '{([' 안에 i가 들어있다면 stack에 append
if i in lst[0]:
stack.append(i)
else:
# 스택에 아무것도 없다면 False리턴
if not stack:
return False
# 스택에 맨마지막 문자를 꺼냄
curr = stack.pop()
# 꺼낸 curr하고 i를 비교 다르면 False
if i == ')':
if curr != "(":
return False
if i == ']':
if curr != "[":
return False
if i == '}':
if curr != "{":
return False
if len(s) == 1 or len(stack) != 0:
return False
return True
Author And Source
이 문제에 관하여(Leet code 20. Valid Parentheses), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@sun1203/Leet-code-20.-Valid-Parentheses저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)