0
点赞
收藏
分享

微信扫一扫

移除无效括号

GhostInMatrix 2022-02-28 阅读 37

去除字符串中的无效括号

题目

(1)给你一个由 ‘(’、’)’ 和小写字母组成的字符串 s。
(2)你需要从字符串中删除最少数目的 ‘(’ 或者 ‘)’ (可以删除任意位置的括号),使得剩下的「括号字符串」有效。请返回任意一个合法字符串。
(3)有效「括号字符串」应当符合以下 任意一条 要求:

  • 空字符串或只包含小写字母的字符串。
  • 可以被写作 AB(A 连接 B)的字符串,其中 A 和 B 都是有效「括号字符串」。
  • 可以被写作 (A) 的字符串,其中 A 是一个有效的「括号字符串」。

(4)示例如下
输入:s = “lee(t©o)de)”
输出:“lee(t©o)de”
解释:“lee(t(co)de)” , “lee(t©ode)” 也是一个可行答案。

解决思路

  • 思路1:用栈结构解决,当遇到左括号时入栈,当遇到右括号时出栈。在栈结构中能被抵消的括号都是有效的括号,不能被抵消的括号都是无效的括号。
  • 思路2:用左右括号差解决,第一遍从左到右遍历字符串,去掉多余的右括号。第二遍遍历,在第一次遍历的结果上从右到左遍历,去掉多余的左括号。然后返回两遍遍历后的结果。

代码

说明

  • 对应LeetCode第1249题。
  • 链接:https://leetcode-cn.com/problems/minimum-remove-to-make-valid-parentheses/
举报

相关推荐

0 条评论