首页 > 编程知识 正文

python算法题(括号匹配算法流程图)

时间:2023-05-06 00:07:03 阅读:77166 作者:4186

本文主要详细介绍了python如何实现括号匹配方法。 本文通过示例代码进行了介绍。 具体来说,在大家的学习和工作上有一定的参考学习网上有销售。 需要的朋友请学习

1 .一个堆栈就可以用【python上可以使用List】解决。 时间和空间的复杂性是o(n ) ) ) )。

#-* -编码: utf8-* -

#符号表

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

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

defcheck(s ) :

arr=[]

for c in s:

if c in SYMBOLS_L:

#左符号堆栈

是ARR.append(c )

elif c in SYMBOLS_R:

#右符号离开堆栈或匹配失败

ifarrandarr [-1 ]==symbols [ c ] :

arr.pop () )

else:

返回假

返回真

print (检查('3* {3((2-3) )4) } )

print (检查(3* {3[4-6] ) } )

2.

#容纳左括号和右括号

open_brackets=' (

close_brackets=' ) } '

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

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

#关于各行数据,如果括号是左括号则放入堆栈中,如果括号是右括号则如下判定是否与堆栈末尾括号对应,

如果对应,则弹出堆栈末尾的元素,如果正确关闭了所有括号,则最终堆栈为空。

for row in rows:

stack=[]

label=True

for char in row:

if char in open_brackets:

stack.append(char ) )

elif char in close_brackets:

if len (堆叠) 1:

label=False

布雷克

elif brackets _ map [ char ]==stack [-1 ] :

stack.pop (

else:

label=False

布雷克

else:

连续

If堆栈!=[]:

label=False

是打印(label )

rows=[

' [ x [ ] { a } ] {/} { t } g } { x } [ b ] [ c [ c ] { { h } },

(' [/]{((x ) ) ) (w ) (f ) ) (v ) ) () ) ) ) ) 652

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

' [ b ] ] [ [ v ] g ] [ { } e } [ * ] d ] g [ [ a ] [ v ] { b } ] ] { a } [ u ] ]

3.

长度较大时,可以尽快判断明显错误的项目,节约时间:

主要想法:

首先,分别存储在两个列表中的是各种括号的大括号和大括号,遍历下一个给定的字符串的情况如下。

1 .右括号列表中显示字符串的开头字符,直接结束,输出错误

2 .字符串长度不为偶数,直接结束,输出错误

3 .将原始字符串列表化并加重,加重后的列表长度不变为偶数并直接结束时,输出错误

4 .遍历字符串,将属于大括号集合的括号添加到列表中,遇到大括号时,使用大括号列表中的索引和

当前列表中最后一个大括号的大括号列表中的索引是否匹配。 匹配时继续,不匹配时直接结束,输出错误

#! usr/温和的小懒汉/env python

# encoding:utf-8

defbracket_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 :

返回假

elif length % 2!=0:

返回假

Eliflen(set_list ) % 2!=0:

返回假

else:

foriinrange (长度) :

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:

返回假

布雷克

返回真

if __name__=='__main__':

one_str_list=['({} ) '、' ({{}} ) '、' [{}]、' {{}}{{}}、{ { } } { } { } { } } { } { }

for one_str in one_str_list:

ifbracket_mathch(one_str ) :

print(one_str,“正确”

else:

print(one_str,错误

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

打印(bracket _ math ch (tmp ) )

希望以上是正文的全部内容,对大家的学习有帮助。 另外,我希望大家支持我购买源代码。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。