반응형
저는 Python 초보자이고 주어진 문자열의 간단한 대괄호 "(", ")"가 균등하게 일치하는지 확인하는이 연습을 보았습니다.
아직 접하지 않은 스택 명령을 사용하여 여기에서 예제를 보았으므로 다른 접근 방식을 시도했습니다. 아무도 내가 어디로 잘못 가고 있는지 말해 줄 수 있습니까?
def matched(str):
ope = []
clo = []
for i in range(0,len(str)):
l = str[i]
if l == "(":
ope = ope + ["("]
else:
if l == ")":
clo = clo + [")"]
else:
return(ope, clo)
if len(ope)==len(clo):
return True
else:
return False
아이디어는 "("및 ")"를 두 개의 개별 목록으로 쌓은 다음 목록의 길이를 비교하는 것입니다. 또한 각각 (또는)을 보유한 관련 i와 함께 목록 ope 및 clo를 추가 한 다른 버전이 있습니다.
시간 내 줘서 고마워!
해결 방법
이를 수행하는 매우 약간 더 우아한 방법은 다음과 같습니다. for 루프를 정리하고 목록을 간단한 카운터 변수로 바꿉니다. 또한 카운터가 0 미만으로 떨어지면 false를 반환하여 matched ( ") (")
가 False
를 반환합니다.
def matched(str):
count = 0
for i in str:
if i == "(":
count += 1
elif i == ")":
count -= 1
if count < 0:
return False
return count == 0
참조 페이지 https://stackoverflow.com/questions/38833819
반응형
'파이썬' 카테고리의 다른 글
파이썬 pprint 모듈의 출력을 로그 파일로 보내는 방법 (0) | 2020.10.31 |
---|---|
파이썬 Seaborn 다중 막대 그림 (0) | 2020.10.31 |
파이썬 TypeError : 'NoneType'객체는 Python에서 반복 할 수 없습니다. (0) | 2020.10.31 |
파이썬 정규식 일치 수 (0) | 2020.10.31 |
파이썬 Nonetype을 정수 또는 문자열로 변환하는 방법은 무엇입니까? (0) | 2020.10.31 |
댓글