括号匹配python_python---括号匹配

"""

括号匹配

输入: "()[]{}" 输出true

输入:"([)]" 输出false

输入:")(()))" 输出false

输入:"()" 输出true

输入:"((([])))" 输出true

输入:"]][[" 输出false

输入:([)] 输出false

"""

def bracket_match_v1(brackets_str):

brackets_dict = {‘(‘: ‘)‘, ‘[‘: ‘]‘, ‘{‘: ‘}‘}

# 右括号开头

if brackets_str[0] in brackets_dict.values():

return False

# 左括号开头

brackets_stack = []

for bracket in brackets_str:

# 左括号进栈

if bracket in brackets_dict.keys():

brackets_stack.append(bracket)

# 右括号 去匹配栈顶元素是否对应

elif bracket in brackets_dict.values():

if brackets_dict[brackets_stack.pop()] != bracket:

return False

if not brackets_stack:

return True

return False

def bracket_match_v2(brackets_str):

"""简化版"""

brackets_dict = {‘)‘: ‘(‘, ‘]‘: ‘[‘, ‘}‘: ‘{‘}

brackets_stack = []

for bracket in brackets_str:

# 左括号

if bracket in brackets_dict.values():

brackets_stack.append(bracket)

# 右括号, 包含右括号开头

elif not brackets_stack or brackets_dict[bracket] != brackets_stack.pop():

return False

return not brackets_stack

print(bracket_match_v1("()[]{}"))

print(bracket_match_v1("([)]"))

print(bracket_match_v1(")(()))"))

print(bracket_match_v1("()"))

print(bracket_match_v1("((([])))"))

print(bracket_match_v1("]][["))

print(bracket_match_v1("([)]"))

print(‘-‘ * 66)

print(bracket_match_v2("()[]{}"))

print(bracket_match_v2("([)]"))

print(bracket_match_v2(")(()))"))

print(bracket_match_v2("()"))

print(bracket_match_v2("((([])))"))

print(bracket_match_v2("]][["))

print(bracket_match_v2("([)]"))

原文:https://www.cnblogs.com/KX-Lau/p/12589626.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值