赞
踩
这个题呢,来自于力扣,在本周的蓝桥杯训练里也看见了这道题,我认为这道题的复杂程度要高于蓝桥杯训练,所以我把蓝桥杯训练拿出来了,咱们先分析蓝桥杯训练,然后再引出不同点。
括号()
的组合千奇百怪,Drizzle 想知道各种组合的括号可以是否合法
合法要求:每个同类型的左括号必须有与之对应的同类的右括号以正确的顺序闭合
输入:输入一个括号字符串 输出:输出是否合法,是则True
,否则False
(){}[]
结尾无空行
True
结尾无空行
对于 100% 的数据:括号字符串长度 ≤ 100
第一,我们要明白这个的考点在什么,非常简单,即栈的操作
所以,我们只需要一个列表,然后顺序读取括号,把左括号依次放进去,如果是右括号时,判断是否为一种括号,如果是,移除左括号。即可
代码如下:
- def op(str1: str):
- str2 = []
- for i in str1:
- if i == '(' or i == '[' or i == '{':
- str2.append(i)
- elif i == ')':
- if str2[len(str2) - 1] != '(':
- return 0
- else:
- str2.pop()
- elif i == ']':
- if str2[len(str2) - 1] != '[':
- return 0
- else:
- str2.pop()
- elif i == '}':
- if str2[len(str2) - 1] != '{':
- return 0
- else:
- str2.pop()
- return 1
所以其实难度并不高
然后补全基础代码即可,下面是完整答案
- # Description: 命里有时终须有,命里无时莫强求
- # Autor: Neptune
- # Date: 2021/10/16 18:58
- def op(str1: str):
- str2 = []
- for i in str1:
- if i == '(' or i == '[' or i == '{':
- str2.append(i)
- elif i == ')':
- if str2[len(str2) - 1] != '(':
- return 0
- else:
- str2.pop()
- elif i == ']':
- if str2[len(str2) - 1] != '[':
- return 0
- else:
- str2.pop()
- elif i == '}':
- if str2[len(str2) - 1] != '{':
- return 0
- else:
- str2.pop()
- return 1
-
-
- str1 = input()
- if op(str1):
- print('True')
- else:
- print("False")
Alan最近眼神不好使,经常分不清楚括号,所以想请你帮忙,给定一个只包括 '(',')','{','}','[',']' 的字符串,想让你帮忙编写程序确定括号是否都是正常闭合。
输入空字符串或一行只包含'(',')','{','}','[',']' 的字符串。
如果所有括号正确闭合,输出“True”,否则输出“False”。
在这里给出一组输入。例如:
()
结尾无空行
在这里给出相应的输出。例如:
True
结尾无空行
在这里给出一组输入。例如:
{[()]()}
结尾无空行
在这里给出相应的输出。例如:
True
结尾无空行
在这里给出一组输入。例如:
{{()[]}
结尾无空行
在这里给出相应的输出。例如:
False
结尾无空行
这个和上面那个有什么区别呢?
毫无疑问在“空字符串被认定为True”
所以我们只需要运用我们非常熟练地判断(try:......except:......):
代码如下:
- try:
- str1 = input()
- if op(str1):
- print('True')
- else:
- print("False")
- except :
- print('True')
'运行
这样我们需要运用前题的思路补全函数即可。
下面为完整答案
- # Description: 命里有时终须有,命里无时莫强求
- # Autor: Neptune
- # Date: 2021/10/18 20:17
- # Description: 命里有时终须有,命里无时莫强求
- # Autor: Neptune
- # Date: 2021/10/16 18:58
- def op(str1: str):
- str2 = []
- if str1.count('(')!=str1.count(')') or str1.count('[')!=str1.count(']') or str1.count('{')!=str1.count('}') :
- return 0
- for i in str1:
- if i == '(' or i == '[' or i == '{':
- str2.append(i)
- elif i == ')':
- if str2[len(str2) - 1] != '(':
- return 0
- else:
- str2.pop()
- elif i == ']':
- if str2[len(str2) - 1] != '[':
- return 0
- else:
- str2.pop()
- elif i == '}':
- if str2[len(str2) - 1] != '{':
- return 0
- else:
- str2.pop()
- return 1
-
- try:
- str1 = input()
- if op(str1):
- print('True')
- else:
- print("False")
- except :
- print('True')
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。