|
发表于 2022-10-30 18:22:38
|
显示全部楼层
本帖最后由 阿奇_o 于 2022-10-30 18:23 编辑
- # 思路:典型的入栈出栈问题
- # 解决:
- def f():
- # n = int(input())
- # ps = [input().strip() for _ in range(n)]
- ps = "({}),{{}},({[}]),}{,{(})[{(}])".split(',') # 方便测试,直接写测试用例
- for p in ps:
- cnt, ls = 0, [] # ls为"栈",cnt保存"对数"
- for i in p:
- # 入栈
- if i in '{([': ls.append(i)
- # 出栈
- if i == '}' and '{' in ls: ls.remove('{'); cnt += 1
- if i == ')' and '(' in ls: ls.remove('('); cnt += 1
- if i == ']' and '[' in ls: ls.remove('['); cnt += 1
- # print(p, f'\t--> Yes 共{cnt}对' if len(ls)==0 else '\t--> No', ) # 是否有效判断 方法一
- print(p, f'\t--> Yes 共{cnt}对' if cnt==len(p)/2 else '\t--> No', ) # 方法二
- # 注:如果只用方法二判断,实际上可以不进行出栈操作,即ls.remove()可省去,只用cnt统计好即可
- f()
复制代码 |
|