def braces(m): o = [] p = [] bralist = [] for i in range(len(m)): if m[i] == '(': o.append(-1) p.append(i) print('i',i,m[i]) elif m[i] == ')': o.append(1) p.append(i) print('i',i,m[i]) else: continue t = sum(o) if t == 0: bralist.append([p[0], p[-1]]) o = [] p = [] print('最外层括号:',bralist) return bralist
时间: 2024-02-07 11:02:35 浏览: 128
django-braces:适用于Django的可重用,通用mixins
这个`braces(m)`函数的作用是找出字符串`m`中所有的最外层括号(即没有被其他括号包含的括号),并返回这些最外层括号的起始和结束位置的列表`bralist`。具体实现如下:
1. 定义三个列表`o`、`p`、`bralist`,其中`o`用于记录左右括号的数量差(左括号数量减去右括号数量),`p`用于记录左右括号的位置,`bralist`用于记录所有最外层括号的起始和结束位置。
2. 用`for`循环遍历字符串`m`中的每个字符,如果是左括号`(`,则在`o`中加入-1,在`p`中加入当前字符的位置;如果是右括号`)`,则在`o`中加入1,在`p`中加入当前字符的位置;如果不是括号,则继续循环。
3. 每次加入左右括号后,计算`o`中所有数字的和`t`,如果`t`等于0,则说明当前所有括号已经匹配完毕,将`p`中记录的最外层括号的起始和结束位置加入`bralist`中,并清空`o`和`p`,继续寻找下一组最外层括号。
4. 循环结束后,返回`bralist`,即所有最外层括号的起始和结束位置的列表。
注意:该函数只能找到括号完全匹配的最外层括号,如果存在括号不匹配的情况,可能无法正确识别最外层括号。
阅读全文