
如何生成所有可能的有效括号组合?
本文介绍一种利用栈数据结构生成所有有效括号组合的算法。该算法通过跟踪左括号和右括号的数量,确保生成的组合始终保持有效。
算法的核心思想是使用两个计数器分别记录左括号和右括号的数量。 当左括号数量小于给定数量 n 时,可以添加一个左括号;当右括号数量小于左括号数量时,可以添加一个右括号。只有当左括号和右括号数量都等于 n 时,才算生成一个有效的括号组合。
以下是一个 PHP 代码示例,演示了该算法的实现:
<?phpfunction generateParenthesis($n) { $result = []; $stack = []; $leftCount = 0; $rightCount = 0; function backtrack($leftCount, $rightCount, $stack, &$result) { if ($leftCount === $n && $rightCount === $n) { $result[] = implode('', $stack); return; } if ($leftCount < $n) { $stack[] = '('; backtrack($leftCount + 1, $rightCount, $stack, $result); array_pop($stack); // 回溯:移除最后添加的左括号 } if ($rightCount
运行这段代码,输出结果如下:
((()))(()())(())()()(())()()()
这个改进后的 PHP 代码使用了递归回溯的方法,更加清晰易懂,并且避免了使用位运算和字符串操作的复杂性,提高了代码的可读性和可维护性。 它直接生成有效括号组合,而无需检查无效组合。
以上就是如何生成所有可能的有效括号组合?的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1253732.html
微信扫一扫
支付宝扫一扫