小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
题目描述
给你一个由若干括号和字母组成的字符串
s
,删除最小数量的无效括号,使得输入的字符串有效。返回所有可能的结果。答案可以按 任意顺序 返回。
示例1 :
1 | scss复制代码输入:s = "()())()" |
示例2 :
1 | scss复制代码输入:s = "(a)())()" |
示例3 :
1 | ini复制代码输入:s = ")(" |
思路:DFS+剪枝
- 从左向右遍历字符串,只要出现右括号比左括号多的情况,可以删除前面任意一个右括号,进入下次递归。
- 如果一直不出现右括号比左括号多的情况,说明右括号已经删除完毕,这时可能有多余的左括号
- 从右向左遍历字符串,删除可能的多余左括号,与删除右括号逻辑一致
1 | java复制代码class Solution { |
本文转载自: 掘金