Python栈的应用之检测括号是否闭合

完整代码:

"""
判断代码括号平衡,即是否闭合
"""

# 定义栈类
class Stack(object):
     def __init__(self):							#初始化空栈
         self.items = []

     def isEmpty(self):								#是否为空
         return self.items == []

     def push(self, item):							#在最后添加一个元素
         self.items.append(item)

     def pop(self):									#删除最后一个元素
         return self.items.pop()

     def peek(self):								#查看最后一个元素
         return self.items[len(self.items)-1]

     def size(self):								#查看栈的大小
         return len(self.items)

# 检测括号是否闭合
def parChecker(symbolString):
    s = Stack()										#实例化栈类
    balanced = True 								#初始化括号为闭合状态(成对)
    index = 0 										#初始化索引值
    while index < len(symbolString) and balanced: 	#检测字符索引在范围内,且括号为闭合状态,则
        symbol = symbolString[index]				#获取待测字符串的当前索引字符
        if symbol in "({[": 						#如果当前字符为"(",则
            s.push(s
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 示例: 输入:"(())" 输出:True 输入:"(()" 输出:False 输入:"())(" 输出:False 解题思路: 1. 创建一个来存储括号,遇到括号就入,遇到右括号就判断是否顶的括号配对,如果配对则弹出顶的括号,继续遍历。 2. 如果遍历完所有括号后,为空,则说明所有括号都有对应的右括号括号字符串合法,返回True,否则返回False。 Python代码实现: ### 回答2: 对于这个问题,可以使用来解决。我们遍历字符串中的每个字符,当遇到括号时,将其压入中。当遇到右括号时,判断是否为空,若为空或顶元素不是与之对应的括号,则说明该括号字符串不合法;若不为空且顶元素是与之对应的括号,则将顶元素弹出。最后,如果为空,说明括号字符串合法,否则不合法。 以下是完整的300字中文回答: 括号的组合千奇百怪,但是我们根据括号必须具有括号相互闭合的规则,可以使用来确定其合法性。首先,建立一个空。然后,遍历字符串中的每个字符。当遇到括号时,将其压入中。当遇到右括号时,先判断是否为空,若为空,则说明该括号字符串不合法,因为右括号没有对应的括号。若不为空,则取出顶元素。若该元素不是与之对应的括号,则说明括号顺序不正确,字符串不合法。若顶元素是与之对应的括号,则将其弹出。重复上述步骤,直到遍历完整个字符串。 最后,检查是否为空。若为空,则说明括号字符串合法,因为中的所有括号都能找到与之对应的右括号。若不为空,则说明括号字符串不合法,因为存在闭合括号。 根据上述算法,我们可以得出判断括号字符串合法性的结果。 ### 回答3: 解题思路: 一、同类型的括号必须有与之对应的同类的右括号以正确的顺序闭合。 二、遍历括号字符串,当遇到括号时,将其放入中;当遇到右括号时,检查是否为对应的括号,如果是则弹出顶元素,否则返回False。 三、最后检查是否为空,如果为空则表示所有括号都正确闭合,返回True,否则返回False。 代码如下: ```python def isValid(s): stack = [] pairs = {")": "(", "]": "[", "}": "{"} for char in s: if char in pairs.values(): stack.append(char) elif char in pairs.keys(): if not stack or stack.pop() != pairs[char]: return False return len(stack) == 0 if __name__ == '__main__': s = input("请输入一个括号字符串:") print(isValid(s)) ``` 测试样例: 输入:"((())())" 输出:True 输入:"((())))" 输出:False

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值