301. 删除无效的括号

301. 删除无效的括号

给你一个由若干括号和字母组成的字符串 s ,删除最小数量的无效括号,使得输入的字符串有效。

返回所有可能的结果。答案可以按 任意顺序 返回。

  • 示例 1:

输入:s = “()())()”
输出:["(())()","()()()"]

  • 示例 2:

输入:s = “(a)())()”
输出:["(a())()","(a)()()"]

  • 示例 3:

输入:s = “)(”
输出:[""]

提示:

  • 1 <= s.length <= 25
  • s 由小写英文字母以及括号 ‘(’ 和 ‘)’ 组成
  • s 中至多含 20 个括号

解题思路

使用广度优先搜索,对上一次产生的字符串的每个括号,逐个尝试删除,每次bfs等于删除一个括号,当出现合法的字符串时,就将其加入结果数组

代码

class Solution {
public:vector<string> removeInvalidParentheses(string s) {vector<string> res;unordered_set<string> set;set.insert(s);while (true) {for (string t:set) {if (is_valid(t))res.push_back(t);}if (res.size() > 0)return res;unordered_set<string> new_set;for (string t:set) {for (int i = 0; i < t.length(); ++i) {if (t[i]=='('||t[i]==')')new_set.insert(t.substr(0,i)+t.substr(i+1));}}set=new_set;}return res;}bool is_valid(string s) {int l = 0;for (char c:s) {if (c == '(')l++;else if (c == ')')l--;if (l < 0)return false;}return l==0;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/389899.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

为什么随机性是信息

用位思考 (Thinking in terms of Bits) Imagine you want to send outcomes of 3 coin flips to your friends house. Your friend knows that you want to send him those messages but all he can do is get the answer of Yes/No questions arranged by him. Lets assume th…

Chrome无法播放m3u8格式的直播视频流的问题解决

出国&#xff0c;然后安装这个插件即可&#xff1a;Native HLS Playback https://chrome.google.com/webstore/detail/native-hls-playback/emnphkkblegpebimobpbekeedfgemhof?hlzh-CN转载于:https://www.cnblogs.com/EasonJim/p/8737001.html

大数据相关从业_如何在组织中以数据从业者的身份闪耀

大数据相关从业Build bridges, keep the maths under your hat and focus on serving.架起桥梁&#xff0c;将数学放在脑海中&#xff0c;并专注于服务。 通过协作而不是通过孤立的孤岛来交付出色的数据工作。 (Deliver great data work through collaboration not through co…

暑假周总结六

本周开始了做网站的商品展示和商品查询的功能&#xff0c;基本功能已完成了。平均每天花4到5个小时进行学习和编码 这周学习了lucene分词器&#xff0c;但是虽然学了一些这些方面的东西&#xff0c;但是查询的时候效果还是不行&#xff0c;还是继续学习 一些更好处理关键字的方…

Django进阶之中间件

中间件简介 在http请求 到达视图函数之前 和视图函数return之后&#xff0c;django会根据自己的规则在合适的时机执行中间件中相应的方法。 中间件的执行流程 1、执行完所有的request方法 到达视图函数。 2、执行中间件的其他方法 2、经过所有response方法 返回客户端。 注意…

汉诺塔递归算法进阶_进阶python 1递归

汉诺塔递归算法进阶When something is specified in terms of itself, it is called recursion. The recursion gives us a new idea of how to solve a kind of problem and this gives us insights into the nature of computation. Basically, many of computational artifa…

500. 键盘行

500. 键盘行 给你一个字符串数组 words &#xff0c;只返回可以使用在 美式键盘 同一行的字母打印出来的单词。键盘如下图所示。 美式键盘 中&#xff1a; 第一行由字符 “qwertyuiop” 组成。 第二行由字符 “asdfghjkl” 组成。 第三行由字符 “zxcvbnm” 组成。 示例 1&a…

windows 停止nginx

1、查找进程 tasklist | findstr nginx2、杀死进程 taskkill /pid 6508 /F3、一次杀死多个进程taskkill /pid 6508 /pid 16048 /f转载于:https://blog.51cto.com/dressame/2161759

SpringBoot返回json和xml

有些情况接口需要返回的是xml数据&#xff0c;在springboot中并不需要每次都转换一下数据格式&#xff0c;只需做一些微调整即可。 新建一个springboot项目&#xff0c;加入依赖jackson-dataformat-xml&#xff0c;pom文件代码如下&#xff1a; <?xml version"1.0&quo…

575. 分糖果

575. 分糖果 给定一个偶数长度的数组&#xff0c;其中不同的数字代表着不同种类的糖果&#xff0c;每一个数字代表一个糖果。你需要把这些糖果平均分给一个弟弟和一个妹妹。返回妹妹可以获得的最大糖果的种类数。 示例 1:输入: candies [1,1,2,2,3,3] 输出: 3 解析: 一共有三…

如何开启并配置CITRIX Xenserver的SNMP服务

以下博文转载至虚拟人生Citrix Xenserver使用标准的NET-SNMP协议&#xff0c;关于NET-SNMP请参考www.net-snmp.org. Xenserver并没有自己的MIB库.Xenserver默认是禁止SNMP服务且并没有开启SNMP服务使用的端口,通过以下方式开启并配置SNMP服务&#xff1a;1.编辑Xenserver的/etc…

orange 数据分析_使用Orange GUI的放置结果数据分析

orange 数据分析Objective : Analysing of several factors influencing the recruitment of students and extracting information through plots.目的&#xff1a;分析影响学生招生和通过情节提取信息的几个因素。 Description : The following analysis presents the diffe…

C++(1)引用

引用 引用 为对象起另外一个名字&#xff0c;通过将声明符写成 &d&#xff0c;其中d是声明的变量名。一旦初始化完成&#xff0c;引用将和起初始值绑定在一起&#xff0c;无法再绑定到另一个对象&#xff0c;因此引用必须初始化。 引用就是别名&#xff0c;初始化以后&am…

普里姆从不同顶点出发_来自三个不同聚类分析的三个不同教训数据科学的顶点...

普里姆从不同顶点出发绘制大流行时期社区的风险群图&#xff1a;以布宜诺斯艾利斯为例 (Map Risk Clusters of Neighbourhoods in the time of Pandemic: a case of Buenos Aires) 介绍 (Introduction) Every year is unique and particular. But, 2020 brought the world the …

一步一步图文介绍SpriteKit使用TexturePacker导出的纹理集Altas

1、为什么要使用纹理集&#xff1f; 游戏是一种很耗费资源的应用&#xff0c;特别是在移动设备中的游戏&#xff0c;性能优化是非常重要的 纹理集是将多张小图合成一张大图&#xff0c;使用纹理集有以下优点&#xff1a; 1、减少内存占用&#xff0c;减少磁盘占用&#xff1b; …

BZOJ.1007.[HNOI2008]水平可见直线(凸壳 单调栈)

题目链接 可以看出我们是要维护一个下凸壳。 先对斜率从小到大排序。斜率最大、最小的直线是一定会保留的&#xff0c;因为这是凸壳最边上的两段。 维护一个单调栈&#xff0c;栈中为当前可见直线(按照斜率排序)。 当加入一条直线l时&#xff0c;可以发现 如果l与栈顶直线l的交…

荷兰牛栏 荷兰售价_荷兰的公路货运是如何发展的

荷兰牛栏 荷兰售价I spent hours daily driving on one of the busiest motorways in the Netherlands when commuting was still a norm. When I first came across with the goods vehicle data on CBS website, it immediately attracted my attention: it could answer tho…

Vim 行号的显示与隐藏

2019独角兽企业重金招聘Python工程师标准>>> Vim 行号的显示与隐藏 一、当前文档的显示与隐藏 1 打开一个文档 [rootpcname ~]# vim demo.txt This is the main Apache HTTP server configuration file. It contains the configuration directives that give the s…

结对项目-小学生四则运算系统网页版项目报告

结对作业搭档&#xff1a;童宇欣 本篇博客结构一览&#xff1a; 1&#xff09;.前言(包括仓库地址等项目信息) 2&#xff09;.开始前PSP展示 3&#xff09;.结对编程对接口的设计 4&#xff09;.计算模块接口的设计与实现过程 5&#xff09;.计算模块接口部分的性能改进 6&…

367. 有效的完全平方数

367. 有效的完全平方数 给定一个 正整数 num &#xff0c;编写一个函数&#xff0c;如果 num 是一个完全平方数&#xff0c;则返回 true &#xff0c;否则返回 false 。 进阶&#xff1a;不要 使用任何内置的库函数&#xff0c;如 sqrt 。 示例 1&#xff1a;输入&#xff1…