,,Python实现括号匹配方法详解

,,Python实现括号匹配方法详解

本文主要介绍python的括号匹配方法的详细讲解,通过实例代码详细介绍,对大家的学习或工作有一定的参考价值,有需要的朋友可以参考一下。

本文主要介绍python的括号匹配方法的详细讲解,通过实例代码详细介绍,对大家的学习或工作有一定的参考价值,有需要的朋友可以参考一下。

1.可以用一个栈解决python中可以用List,时间和空间复杂度都是O(n)

# -*-编码:utf8 -*-

#符号表

SYMBOLS={'}': '{ ',']': '[',')': '(',' ':' ' }

SYMBOLS_L,SYMBOLS_R=SYMBOLS.values(),SYMBOLS.keys()

定义检查:

arr=[]

对于s中的c:

如果c在SYMBOLS_L中:

#堆栈中的左侧符号

数组追加(c)

符号中的elif c _ R:

#右边的符号要么弹出堆栈,要么匹配失败。

if arr和arr[-1]==SYMBOLS[c]:

arr.pop()

否则:

返回False

返回True

print(check('3 * {3 [(2 -3) * (4 5)]))

打印(check('3 * {3 [4 - 6}]'))

2.

#存放左括号和右括号

open_brackets='([{ '

close_brackets=')]} '

#映射左右括号,便于判断堆栈。

括号_map={ ')':'(',']': '[',' }': '{ ',' ':' ' }

#对于每一行数据,进行以下确定。如果括号是左括号,则将其添加到堆栈中。如果括号是右括号,确定它是否对应于堆栈末尾的括号。

如果是这样,则弹出stack元素的end,如果所有的括号都正确结束,则最后一个堆栈为空。

对于行中的行:

stack=[]

标签=真

对于行中的字符:

如果用左括号括起来:

stack.append(字符)

右括号中的elif字符:

如果镜头(堆栈)1:

标签=假

破裂

elif括号_map[char]==堆栈[-1]:

stack.pop()

否则:

标签=假

破裂

否则:

继续

if栈!=[]:

标签=假

打印(标签)

行数=[

'([^x[ ]{a}]{/}{t}g^){x}b{x}z({%}w[b][c[c]]{ h { h } } ',

'[/]{((x)({{*}*}w)w){f}{v}[%(^[z]{u}{ })([[]-]h)]{ c }(*)[y]} ',

'(^)z[b][[(c)u[v]{ zb b }]g][/b[(])v(v)()](v)',

[[b]][(v)g]z([{ {-} e }[*]d]g[[a](v){ b } e]){ a }[u]']

3.

长度较大时,可以尽快判断出一些明显的错误模式,节省时间:

主要观点:

首先设置两个列表分别存储各个括号的开括号和闭括号,然后遍历给定的字符串,如下:

1.字符串的第一个字符出现在右括号列表中,所以直接结束,输出是错误的。

2.字符串长度不均匀,直接结束,输出错误。

3.列出原始字符串以删除重复项。如果删除的列表长度不是偶数,会直接结束,输出会出错。

4.遍历字符串,将属于开括号集的括号添加到列表中,当遇到闭括号时,计算闭括号在闭括号列表中的索引。

当前列表中最后一个左括号的索引在左括号列表中是否一致;如果是,继续;否则,它将直接以输出错误结束。

#!usr/bin/env python

#编码:utf-8

def bracket_mathch(one_str):

'''''

括号匹配

'''

tmp_list=[]

open_bracket_list=['(','[',' { ','',' <']

close_bracket_list=[')',']',' } ','',' " " ']

one_str_list=list(one_str)

length=len(一个字符串列表)

set_list=list(set(one_str_list))

num _ list=[one _ str _ list . count(one)for one in set _ list]

如果close_bracket_list中有one_str[0]:

返回False

elif长度% 2!=0:

返回False

elif len(set_list) % 2!=0:

返回False

否则:

对于范围内的I(长度):

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()

否则:

返回False

破裂

返回True

if __name__=='__main__ ':

one_str_list=['({})','({[ 《》 ]})','[(]){} ',' {{{{{{ ','([{}])',' }{[()]']

对于one_str_list中的one_str:

if bracket_mathch(one_str):

Print(one_str,'正确')

否则:

Print(one_str,' error ')

tmp=' { }[{()()[]{ {[[(()()()(){ }[]{ }[]{ }[]()]]]} }]'

print(bracket_mathch(tmp))

这就是本文的全部内容。希望对大家的学习有帮助,支持我们。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: