LeetCode 1249. 移除无效的括号(栈+set / deque)

1. 题目

给你一个由 '('、')' 和小写字母组成的字符串 s。

你需要从字符串中删除最少数目的 ‘(’ 或者 ‘)’ (可以删除任意位置的括号),使得剩下的「括号字符串」有效。

请返回任意一个合法字符串。

有效「括号字符串」应当符合以下 任意一条 要求:

  • 空字符串或只包含小写字母的字符串
  • 可以被写作 AB(A 连接 B)的字符串,其中 A 和 B 都是有效「括号字符串」
  • 可以被写作 (A) 的字符串,其中 A 是一个有效的「括号字符串」
示例 1:
输入:s = "lee(t(c)o)de)"
输出:"lee(t(c)o)de"
解释:"lee(t(co)de)" , "lee(t(c)ode)" 也是一个可行答案。示例 2:
输入:s = "a)b(c)d"
输出:"ab(c)d"示例 3:
输入:s = "))(("
输出:""
解释:空字符串也是有效的示例 4:
输入:s = "(a(b(c)d)"
输出:"a(b(c)d)"提示:
1 <= s.length <= 10^5
s[i] 可能是 '('')' 或英文小写字母

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/minimum-remove-to-make-valid-parentheses
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 用栈判断是否合法,不合法的位置,把 idx 存入 set 或者 哈希set
  • 遍历字符串把不合法的位置跳过,合法的加入答案字符串
class Solution {
public:string minRemoveToMakeValid(string s) {string ans;stack<int> stk;set<int> del;//要删除的idx存储取来for(int i = 0; i < s.size(); ++i){if(s[i] == '(')stk.push(i);else if(s[i] == ')'){if(!stk.empty())stk.pop();elsedel.insert(i);//栈为空,碰到 ),要删除}}while(!stk.empty())//结束后栈不为空,也要删除{del.insert(stk.top());stk.pop();}auto it = del.begin();//遍历要删除的for(int i = 0; i < s.size(); ++i){if(it != del.end() && i == *it){it++;continue;//跳过要删除的}ans += s[i];}return ans;}
};

52 ms 12.1 MB


或者用 unordered_set

class Solution {
public:string minRemoveToMakeValid(string s) {string ans;stack<int> stk;unordered_set<int> del;for(int i = 0; i < s.size(); ++i){if(s[i] == '(')stk.push(i);else if(s[i] == ')'){if(!stk.empty())stk.pop();elsedel.insert(i);}}while(!stk.empty()){del.insert(stk.top());stk.pop();}for(int i = 0; i < s.size(); ++i){if(del.count(i))continue;ans += s[i];}return ans;}
};

76 ms 12.1 MB


或者使用 deque 模拟栈,最后剩下的就是要删除的
顺序遍历deque就可以跳过要删除的了

class Solution {
public:string minRemoveToMakeValid(string s) {string ans;deque<int> q;for(int i = 0; i < s.size(); ++i){if(s[i] == '(')q.push_back(i);else if(s[i] == ')'){if(!q.empty() && s[q.back()]=='(')q.pop_back();elseq.push_back(i);;}}for(int i = 0, j = 0; i < s.size(); ++i){if(j < q.size() && i == q[j]){j++;continue;}ans += s[i];}return ans;}
};

68 ms 12.4 MB

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

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

相关文章

【DKN】(七)dataset.py【未完】

内容 里面有的函数在这里https://blog.csdn.net/qq_35222729/article/details/119882362 try:config getattr(importlib.import_module(config), f"{model_name}Config") except AttributeError:print(f"{model_name} not included!")exit()class BaseDa…

php raabitmq中间件_rabbitMQ消息中间件环境配置及原理了解

视频教程一、Docker 入门Docker是什么&#xff1f;Docker 是一个开源的应用容器引擎&#xff0c;你可以将其理解为一个轻量级的虚拟机&#xff0c;开发者可以打包他们的应用以及依赖包到一个可移植的容器中&#xff0c;然后发布到任 何流行的 Linux 机器上。为什么要使用 Docke…

CSS 中的定位:relative,absolute

今天碰到一个定位问题&#xff0c;问题解决不好&#xff0c;于是花了大量的时间&#xff0c;调试了好久&#xff0c;得出了一些结果&#xff1a;1、如果有两个不交叉的盒子位于一个大盒子里面&#xff0c;位于上边的盒子的定位为relative&#xff0c;而下边的那个盒子的定位则是…

【DKN】(六)KCNN.py

内容 import torch import torch.nn as nn import torch.nn.functional as F from src.model.general.attention.additive import AdditiveAttentiondevice torch.device("cuda:0" if torch.cuda.is_available() else "cpu")class KCNN(torch.nn.Module):…

北京精雕现状_6秒精密加工,日本走下神坛,北京精雕也做了一个!

各位社友还记得吗&#xff0c;机械社区之前分享过——日本6秒的精密加工火遍制造业圈子~▲点击上图 查看日本怎么用6s让世界惊奇在一阵惊呼赞叹中&#xff0c;一部分人也表示不服&#xff01;比如&#xff0c;国内一位牛人也展示了他的产品。一起看看视频介绍吧——而近日&…

LeetCode 859. 亲密字符串

1. 题目 给定两个由小写字母构成的字符串 A 和 B &#xff0c;只要我们可以通过交换 A 中的两个字母得到与 B 相等的结果&#xff0c;就返回 true &#xff1b;否则返回 false 。 示例 1&#xff1a; 输入&#xff1a; A "ab", B "ba" 输出&#xff1a…

ASP.Net快速开发新闻系统 在线播放

http://www.so138.com/sov/d19a5913-88cf-4abf-a487-69293bb0c403.html转载于:https://www.cnblogs.com/freedom831215/archive/2009/10/03/1577631.html

【DKN】(五)attention.py

感觉还是挺简单&#xff0c;这里只是方便之后回来瞅瞅 import torch import torch.nn as nn import torch.nn.functional as Fclass Attention(torch.nn.Module):"""Attention Net.Input embedding vectors (produced by KCNN) of a candidate news and all of…

小米扫地机器人充电座指示灯不亮_小米扫地机器人常见问题处理 充电后无法取电怎么办?...

与其他科技领域一样&#xff0c;人工智能领域也得到蓬勃发展。如今人工智能已经无处不在。专家把人工智能比作电力&#xff0c;因为它是一种可能改变各行各业的资源。诚然&#xff0c;每个领域都有一些特别重要的技术&#xff0c;例如随着生活的水平的提高&#xff0c;扫地机器…

Enterprise Library 4.1 快速上手(图)

简介&#xff1a; 关于Enterprise Library 的概念&#xff0c;网上可以很容易的找到&#xff0c;在这里要做的是如何快速的打通Enterprise Library 4.1的使用&#xff0c; 让咱们可以用最短的时间使用起来&#xff0c;并且在需要的时候在此基础上再花时间延伸&#xff0c;这是学…

知识图谱源码详解【八】__init__.py

import torch from src.model.DKN.KCNN import KCNN from src.model.DKN.attention import Attention from src.model.general.click_predictor.DNN import DNNClickPredictor# 就是把整个模型框架梳理到一块了&#xff01; class DKN(torch.nn.Module):"""Deep…

python complex函数def_【Python3】Python函数

1. 函数对象函数是第一类对象&#xff0c;即函数可以当做数据传递可以被引用可以当做参数传递返回值可以是函数可以当做容器类型的元素def foo():print(from foo)def index():print(from index)dic {foo:foo,index:index,}while True:choice input(">>>>>…

追MM与设计模式的有趣见解

Posted on 2007-01-18 12:53 东人EP 阅读(383) 评论(0) 编辑 收藏 引用 所属分类: Design Pattern 追MM与设计模式的有趣见解 创建型模式 1、FACTORY —追MM少不了请吃饭了&#xff0c;麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西&#xff0c;虽然口味有所不同&#xff0c;…

LeetCode 872. 叶子相似的树

1. 题目 请考虑一颗二叉树上所有的叶子&#xff0c;这些叶子的值按从左到右的顺序排列形成一个 叶值序列 。 举个例子&#xff0c;如上图所示&#xff0c;给定一颗叶值序列为 (6, 7, 4, 9, 8) 的树。 如果有两颗二叉树的叶值序列是相同&#xff0c;那么我们就认为它们是 叶…

【十】推荐系统遇到知识图谱RippleNet

RippleNet: Propagating User Preferences on the Knowledge Graph for Recommender Systems 代码&#xff1a; https://github.com/hwwang55/RippleNet 心得 &#xff08;1&#xff09;你需要知道Kg是如何起到作用的&#xff01; KG的形式是什么&#xff01; &#xff08;2&…

桩筏有限元中的弹性板计算_采用PKPM系列JCCAD软件桩筏筏板有限元方法计算的模型参数 -...

*****采用PKPM系列JCCAD软件桩筏筏板有限元方法计算的模型参数******计算模型:弹性地基梁板模型 (桩和土按WINKLER模型)地基基础形式及参照规范:天然地基(地基规范)、常规桩基(桩基规范)上部结构影响(共同作用计算): 网格划分依据:所有底层网格线有限元网格控制边长(m): 2.0 采…

[VC]旋转位图图片的算法函数

网上有很多关于位图旋转的资料,但是讲得很清楚的不多(我没有仔细查找).于是我也写了一个,希望能给向我这样的初学者一点帮助. 第一步,你必须知道位图即BMP格式的文件的结构. 位图(bmp)文件由以下几个部分组成: 1.BITMAPFILEHEADER,它的定义如下: typedef struct tagBITMAPFILEH…

LeetCode 836. 矩形重叠

1. 题目 矩形以列表 [x1, y1, x2, y2] 的形式表示&#xff0c;其中 (x1, y1) 为左下角的坐标&#xff0c;(x2, y2) 是右上角的坐标。 如果相交的面积为正&#xff0c;则称两矩形重叠。 需要明确的是&#xff0c;只在角或边接触的两个矩形不构成重叠。 给出两个矩形&#xff…

推荐系统和知识图谱论文推荐

KDD2020 Graph-based Recommendation&#xff08;基于图&#xff0c;不是知识图谱&#xff09; 1. A Framework for Recommending Accurate and Diverse Items Using Bayesian Graph Convolutional Neural Networks 【华为诺亚】 2. An Efficient Neighborhood-based Intera…

cmd执行python 环境变量应该怎么写_python怎么运行py文件?.py文件cmd命令方法及环境变量配置教程...

python是一款应用非常广泛的脚本程序语言&#xff0c;谷歌公司的网页就是用python编写。python在生物信息、统计、网页制作、计算等多个领域都体现出了强大的功能。python和其他脚本语言如java、R、Perl 一样&#xff0c;都可以直接在命令行里运行脚本程序。那么python怎么运行…