301.删除无效的括号
题目:301.删除无效的括号
给你一个由若干括号和字母组成的字符串 s ,删除最小数量的无效括号,使得输入的字符串有效。
返回所有可能的结果。答案可以按 任意顺序 返回。
示例:
1 | 输入:s = "()())()" |
1 | 输入:s = "(a)())()" |
1 | 输入:s = ")(" |
题解:
今天是一道括号匹配的题目,题目要求输出有效并且最长的字符串,所以没有别的方法,只能回溯搜索+剪枝,每次遇到括号都有两种情况,选和不选,遇到字母就放入字符串中,不过要先遍历一次给的字符串,确定要删除多少左括号和删除多少有括号,确定最终有效字符串的长度。
1 | HashSet<String> help = new HashSet<>(); |
下面是三叶大佬的方法,她在遍历的过程中进行了剪枝,所以效率要高很多,学习了!
1 | Set<String> set = new HashSet<>(); |
后记:
今天第一次自己A出了困难题(虽然也不太难),但是也是值得庆祝的一天,这是向大佬迈出的第一步,开心!!!!
301.删除无效的括号