括号嵌套深度计算函数问题:如何将0判定为True?
解决方法
不用重写整个函数,只需要调整返回值里valid和balanced的判定逻辑就行:
- balanced直接取最终括号平衡计数是否为0的布尔值,也就是
balance == 0,这个结果本身就是True或False。 - valid需要同时满足两个条件:
- 遍历过程中括号深度从没出现过负值(不会有多余的闭合括号提前出现);
- 最终括号平衡计数为0(没有多余的开括号或闭括号)。
所以把原函数里valid的最终值改成「记录遍历中是否合法的标志 and balance == 0」即可。
举个具体的修改示例(假设你已经在遍历过程中用valid变量标记了是否出现过负值):
# 原函数末尾如果是这样: # return (max_depth, valid, balance == 0) # 改成下面这样: final_balanced = balance == 0 final_valid = valid and final_balanced return (max_depth, final_valid, final_balanced)
这样当括号全程合法且最终平衡时,就能得到你想要的(5, True, True)结果,完全不用重写核心遍历代码。
内容的提问来源于stack exchange,提问作者Finn-arild
相关产品推荐
相关产品推荐

