이 글에서는 주로 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=['(','[','{','<','《'] close_bracket_list=[')',']','}','>','》'] 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__ == '__main__': one_str_list=['({})','({[<《》>]})','[(]){}','{{{{{{','([{}])','}{[()]'] for one_str in one_str_list: if bracket_mathch(one_str): print one_str, '正确' else: print one_str, '错误' tmp='{}[{()()[]<{{[[[[(())()()(){}[]{}[]()<>]]]]}}>}]' print bracket_mathch(tmp)
결과는 다음과 같습니다. :
위 내용은 Python은 대괄호 일치 문제를 해결하는 방법을 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!