>백엔드 개발 >파이썬 튜토리얼 >Python은 대괄호 일치 문제를 해결하는 방법을 구현합니다.

Python은 대괄호 일치 문제를 해결하는 방법을 구현합니다.

不言
不言원래의
2018-04-17 10:57:552205검색

이 글에서는 주로 Python의 대괄호 매칭 문제 해결 방법을 소개합니다. Python의 스택 기반 문자열 탐색, 판단 및 대괄호 매칭 해결을 위한 조작 기술이 포함되어 있습니다. 도움이 필요한 친구는 이를 참고할 수 있습니다.

이 글은 예제와 함께 Python 구현을 설명합니다. 대괄호 일치 문제를 해결하기 위한 것입니다. 참고하실 수 있도록 자세한 내용은 다음과 같습니다.

저는 학부에서 데이터 구조를 공부할 때 이 내용을 많이 접했습니다. 주류 아이디어는 스택 푸시와 팝핑을 사용하여 매칭을 수행하는 것입니다. . Python의 경우 목록의 append方法相当于栈的push方法,列表的pop方法相当于栈的pop 메소드 때문에 이 작업을 완료할 수 있습니다.

주요 아이디어:

먼저 다양한 괄호의 여는 괄호와 닫는 괄호를 저장하기 위한 두 개의 목록을 설정한 다음 주어진 문자열을 순회하며 다음과 같은 상황으로 나뉩니다.

1. 닫힌 괄호 목록에 문자가 나타나서 바로 끝나고 오류가 발생합니다.

2. 문자열의 길이가 짝수가 아니고 바로 끝나서 오류가 발생합니다.

3. 원본 문자열을 나열하고 중복을 제거합니다. 중복 제거된 목록의 길이가 짝수인 경우 바로 종료되고 오류가 출력됩니다.

4. 문자열을 탐색하여 열린 괄호 세트에 속한 괄호를 목록에 추가하고 닫힌 괄호를 만나면 대괄호, 닫힌 괄호 목록에서 닫힌 괄호의 인덱스와 현재 목록의 끝을 계산합니다. 열린 괄호 목록에서 열린 괄호의 인덱스가 일치하는지 여부, 일치하면 계속하고, 그렇지 않으면 직접 종료되고 오류를 출력합니다

주된 이유는 길이가 매우 클 때 일부 명백한 오류 패턴을 가능한 한 빨리 확인하고 시간을 절약할 수 있다는 것입니다. 다음은 구체적인 구현입니다.

#!usr/bin/env python
#encoding:utf-8
'''''
__Author__:沂水寒城
功能:括号匹配的相关问题
'''
def bracket_mathch(one_str):
 '''''
 括号匹配
 '''
 tmp_list=[]
 open_bracket_list=[&#39;(&#39;,&#39;[&#39;,&#39;{&#39;,&#39;<&#39;,&#39;《&#39;]
 close_bracket_list=[&#39;)&#39;,&#39;]&#39;,&#39;}&#39;,&#39;>&#39;,&#39;》&#39;]
 one_str_list=list(one_str)
 length=len(one_str_list)
 set_list=list(set(one_str_list))
 num_list=[one_str_list.count(one) for one in set_list]
 if one_str[0] in close_bracket_list:
  return False
 elif length%2!=0:
  return False
 elif len(set_list)%2!=0:
  return False
 else:
  for i in range(length):
   if one_str[i] in open_bracket_list:
    tmp_list.append(one_str[i])
   elif one_str[i] in close_bracket_list:
    if close_bracket_list.index(one_str[i])==open_bracket_list.index(tmp_list[-1]):
     tmp_list.pop()
    else:
     return False
     break
 return True
if __name__ == &#39;__main__&#39;:
 one_str_list=[&#39;({})&#39;,&#39;({[<《》>]})&#39;,&#39;[(]){}&#39;,&#39;{{{{{{&#39;,&#39;([{}])&#39;,&#39;}{[()]&#39;]
 for one_str in one_str_list:
  if bracket_mathch(one_str):
   print one_str, &#39;正确&#39;
  else:
   print one_str, &#39;错误&#39;
 tmp=&#39;{}[{()()[]<{{[[[[(())()()(){}[]{}[]()<>]]]]}}>}]&#39;
 print bracket_mathch(tmp)

결과는 다음과 같습니다. :

위 내용은 Python은 대괄호 일치 문제를 해결하는 방법을 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.