<p>像这样的?你知道吗</p>
<pre><code>def is_nested(nested_str):
opening = ['(', '{', '[', '<']
closing = {'(':')','{':'}', '[':']', '<':'>'}
braces = []
depth = 0
max_depth = 0
max_depth_index = None
for index, char in enumerate(nested_str):
if char in opening:
braces.append(char)
depth += 1
elif char == closing[braces[-1]]:
braces.pop()
depth -= 1
else:
raise ValueError("This is not a valid str")
if depth > max_depth:
max_depth = depth
max_depth_index = index
return max_depth, max_depth_index
</code></pre>
<p>此函数获取一个只包含大括号的字符串,并告诉您嵌套的最深级别,以及该级别嵌套的第一个实例的开始大括号的索引。另外,如果字符串未成形,它将引发错误。你知道吗</p>
<pre><code>>>> is_nested('{[][]}')
(2, 1)
>>> is_nested('{[][<()()>]()}[]()')
(4, 5)
>>> is_nested('{(})')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "nesting.py", line 16, in is_nested
ValueError: This is not a valid str
</code></pre>
<p>我已经将大括号以外的任何字符定义为错误,但这可以通过修改<code>else</code>条件来轻松更改。你知道吗</p>