给你一个由若干括号和字母组成的字符串 s ,删除最小数量的无效括号,使得输入的字符串有效。返回所有可能的结果。答案可以按 任意顺序 返回。示例 1:输入:s = "()())()"
输出:["(())()","()()()"]
示例 2:输入:s = "(a)())()"
输出:["(a())()","(a)()()"]
示例 3:输入:s = ")("
输出:[""]提示:1 <= s.length <= 25
s 由小写英文字母以及括号 '(' 和 ')' 组成
s 中至多含 20 个括号来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/remove-invalid-parentheses
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处

不太会

答案

class Solution {private List<String> res = new ArrayList<String>();public List<String> removeInvalidParentheses(String s) {int lremove = 0;int rremove = 0;for (int i = 0; i < s.length(); i++) {if (s.charAt(i) == '(') {lremove++;} else if (s.charAt(i) == ')') {if (lremove == 0) {rremove++;} else {lremove--;}}}helper(s, 0, 0, 0, lremove, rremove);return res;}private void helper(String str, int start, int lcount, int rcount, int lremove, int rremove) {if (lremove == 0 && rremove == 0) {if (isValid(str)) {res.add(str);}return;}for (int i = start; i < str.length(); i++) {if (i != start && str.charAt(i) == str.charAt(i - 1)) {continue;}// 如果剩余的字符无法满足去掉的数量要求,直接返回if (lremove + rremove > str.length() - i) {return;}// 尝试去掉一个左括号if (lremove > 0 && str.charAt(i) == '(') {helper(str.substring(0, i) + str.substring(i + 1), i, lcount, rcount, lremove - 1, rremove);}// 尝试去掉一个右括号if (rremove > 0 && str.charAt(i) == ')') {helper(str.substring(0, i) + str.substring(i + 1), i, lcount, rcount, lremove, rremove - 1);}if (str.charAt(i) == ')') {lcount++;} else if (str.charAt(i) == ')') {rcount++;}// 当前右括号的数量大于左括号的数量则为非法,直接返回.if (rcount > lcount) {break;}}}private boolean isValid(String str) {int cnt = 0;for (int i = 0; i < str.length(); i++) {if (str.charAt(i) == '(') {cnt++;} else if (str.charAt(i) == ')') {cnt--;if (cnt < 0) {return false;}}}return cnt == 0;}
}

301. 删除无效的括号【我亦无他唯手熟尔】相关推荐

  1. 237. 删除链表中的节点【我亦无他唯手熟尔】

    237. 删除链表中的节点 请编写一个函数,用于 删除单链表中某个特定节点 .在设计函数时需要注意,你无法访问链表的头节点 head ,只能直接访问 要被删除的节点 . 题目数据保证需要删除的节点 不 ...

  2. 136. 只出现一次的数字【我亦无他唯手熟尔】

    136. 只出现一次的数字 136. 只出现一次的数字 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次.找出那个只出现了一次的元素.说明:你的算法应该具有线性时间复杂度. 你 ...

  3. 1929. 数组串联【我亦无他唯手熟尔】

    1929. 数组串联 题目 题解 题目 给你一个长度为 n 的整数数组 nums .请你构建一个长度为 2n 的答案数组 ans ,数组下标 从 0 开始计数 ,对于所有 0 <= i < ...

  4. 438. 找到字符串中所有字母异位词【我亦无他唯手熟尔】

    438. 找到字符串中所有字母异位词 438. 找到字符串中所有字母异位词 题解 官方 438. 找到字符串中所有字母异位词 难度 中等 给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 ...

  5. 786. 第 K 个最小的素数分数【我亦无他唯手熟尔】

    786. 第 K 个最小的素数分数 786. 第 K 个最小的素数分数 题解 786. 第 K 个最小的素数分数 难度 困难 给你一个按递增顺序排序的数组 arr 和一个整数 k .数组 arr 由 ...

  6. 樊登读书搞定读后感_读书笔记/读后感《读懂一本书,樊登读书法》——无他唯手熟尔...

    当我们在生活及工作中遇到问题的时候,通常会请教同事或者上网搜索解决方法,但是我们忽略了另外一个解决问题的途径,那就是通过阅读书籍积累知识.为什么大家并不习惯于阅读书籍呢,那是因为大家认为眼前遇到问题最 ...

  7. 【LeetCode】【HOT】301. 删除无效的括号(递归)

    [LeetCode][HOT]301. 删除无效的括号 文章目录 [LeetCode][HOT]301. 删除无效的括号 package hot;import java.util.ArrayList; ...

  8. 卖油翁 欧阳修 无他,但手熟尔

    陈康肃公尧咨善射,当世无双,公亦以此自矜.尝射于家圃,有卖油翁释担而立,睨之,久而不去.见其发矢十中八九,但微颔之. 康肃问曰:"汝亦知射乎?吾射不亦精乎?"翁曰:"无他 ...

  9. 【LeetCode笔记】301. 删除无效的括号(Java、DFS、字符串)

    文章目录 题目描述 思路 && 代码 二刷 题目描述 [所有可能结果]-> [暴力DFS] 思路 && 代码 代码比较长,但是总体思路很清晰. 剪枝:舍弃左括号. ...

  10. Leecode 301. 删除无效的括号——Leecode每日一题系列

    题目描述 给你一个由若干括号和字母组成的字符串 s ,删除最小数量的无效括号,使得输入的字符串有效. 返回所有可能的结果.答案可以按 任意顺序 返回. 示例 1: 输入:s = "()()) ...

最新文章

  1. IT一大道至简: 文章列表
  2. 算法:删除排序数组中的重复项||
  3. 解决Eclipse里Maven工程报 An error occurred while filtering resources错误
  4. [蓝桥杯2016决赛]平方末尾-数论,枚举
  5. linux下bios设置内存电压,系统安装的BIOS设置?
  6. JSP学习笔记(六十二):struts2中的Lambda表达式
  7. java 反射基础_Java基础教程:反射基础
  8. 春运渡劫?Python 帮你 12306 抢回家的火车票!
  9. python界面编程实例_python GUI库图形界面开发之PyQt5美化窗体与控件(异形窗体)实例...
  10. 数组作为方法的参数实例和细节(Java)
  11. MCP2515独立控制器
  12. WinRAR5.60 64位 官方无广告正式版注册破解
  13. 潘丽云:魏尔斯特拉斯的复变函数思想分析(2009)(2011-01-14 22:34:30)
  14. 网络安全笔记-99-渗透-SSRF
  15. Markdown还能这么玩?这款开源神器绝了!
  16. 调用腾讯云使用图像验证码
  17. c语言从键盘输入一个整数判断是否为素数,键盘输入一个正整数,程式设计判断其是否为素数(即质数)...
  18. 全站仪与计算机之间的数据传输,【科普】全站仪数据传输的三种方式
  19. Unity赛车教程第三部分
  20. NUC970实现SPI通信

热门文章

  1. 基于arduino的oled显示屏的使用
  2. Spring Boot 事务详解
  3. 第一站 Theano 简介
  4. Inception-V3论文翻译——中英文对照
  5. python中反差分操作
  6. IDEA下,Ctrl+Alt+方向键,屏幕翻转问题
  7. 叶俊获“约翰·格雷博士中国行”最佳贡献奖
  8. AI在线画图(文生图,通过文字绘制图片)
  9. smbd cpu高 linux,Samba smbd vfs.c访问限制绕过漏洞(CVE-2015-5252)
  10. Mol Cell Proteomics. |廖文丽| 阿尔兹海默症临床前期的脑脊液中突触蛋白的变化先于神经变性标志物...