| 
 | 
 
 
发表于 2023-4-9 15:56:46
|
显示全部楼层
 
 
 
 本帖最后由 isdkz 于 2023-4-9 15:59 编辑  
 
您好!这段代码的主要目的是检测输入的字符串中的括号是否合法,即括号是否成对出现和正确匹配。 
 
这里有一个关键点:stack.extend(c) 实际上是将字符串 c 的每个字符逐个添加到 stack 中。 
 
当输入为 {} 时,遇到 { 时,stack.extend(c) 将 { 添加到 stack。然后,遇到 } 时, 
 
代码会判断它是否匹配 stack 中的最后一个元素(即 {),如果匹配,就将其从 stack 中删除。 
 
这里是代码的简化版以帮助您理解: 
 
- s = input("请输入测试字符串:")
 
  
- stack = []
 
  
- for c in s:
 
 -     if c == '(' or c == '{' or c == '[':
 
 -         stack.append(c)  # 使用append替代extend
 
 -     else:
 
 -         if len(stack) == 0:
 
 -             print("非法")
 
 -             break
 
  
-         if c == ')':
 
 -             d = '('
 
 -         elif c == ']':
 
 -             d = '['
 
 -         elif c == '}':
 
 -             d = '{'
 
  
-         if d == stack[-1]:
 
 -             stack.pop()
 
 -         else:
 
 -             print("非法")
 
 -             break
 
 - else:
 
 -     if len(stack) != 0:
 
 -         print('非法')
 
 -     else:
 
 -         print("合法")
 
 
  复制代码 
 
当您输入 {} 时,stack 中的元素变化如下: 
 
- { -> stack = [{]
 - } -> stack = []
 
 
  
 
在遍历字符串的过程中,遇到 { 时,将其添加到 stack,遇到 } 时,发现它匹配 stack 中的最后一个元素 {,因此将其从 stack 中删除。最后,stack 为空,表示括号是合法的。 |   
 
 
 
 |