「每日LeetCode」一大波括号相关的题
本文最后更新于:2023年3月19日 晚上
Lt1021. 删除最外层的括号
1021. 删除最外层的括号
有效括号字符串为空 ("")、"(" + A + ")" 或 A + B,其中 A 和 B 都是有效的括号字符串,+ 代表字符串的连接。例如,"","()","(())()" 和 "(()(()))" 都是有效的括号字符串。
如果有效字符串 S 非空,且不存在将其拆分为 S = A+B 的方法,我们称其为原语(primitive),其中 A 和 B 都是非空有效括号字符串。
给出一个非空有效字符串 S,考虑将其进行原语化分解,使得:S = P_1 + P_2 + ... + P_k,其中 P_i 是有效括号字符串原语。
对 S 进行原语化分解,删除分解中每个原语字符串的最外层括号,返回 S 。
示例 1:
1 | |
示例 2:
1 | |
示例 3:
1 | |
提示:
S.length <= 10000S[i]为"("或")"S是一个有效括号字符串
思路
每次左右相等的时候其实就是删除括号的实机
解答
1 | |
1614. 括号的最大嵌套深度
如果字符串满足以下条件之一,则可以称之为 有效括号字符串(valid parentheses string,可以简写为 VPS):
- 字符串是一个空字符串
"",或者是一个不为"("或")"的单字符。 - 字符串可以写为
AB(A与B字符串连接),其中A和B都是 有效括号字符串 。 - 字符串可以写为
(A),其中A是一个 有效括号字符串 。
类似地,可以定义任何有效括号字符串 S 的 嵌套深度 depth(S):
depth("") = 0depth(C) = 0,其中C是单个字符的字符串,且该字符不是"("或者")"depth(A + B) = max(depth(A), depth(B)),其中A和B都是 有效括号字符串depth("(" + A + ")") = 1 + depth(A),其中A是一个 有效括号字符串
例如:""、"()()"、"()(()())" 都是 有效括号字符串(嵌套深度分别为 0、1、2),而 ")(" 、"(()" 都不是 有效括号字符串 。
给你一个 有效括号字符串 s,返回该字符串的_ _s 嵌套深度 。
示例 1:
1 | |
示例 2:
1 | |
示例 3:
1 | |
示例 4:
1 | |
提示:
1 <= s.length <= 100s由数字0-9和字符'+'、'-'、'*'、'/'、'('、')'组成- 题目数据保证括号表达式
s是 有效的括号表达式
思路
因为是有效括号,所以不需要判断,当为右括号时,栈的 size 即为嵌套最深的深度,用一个 max 来记录即可。
解答
1 | |
剑指 Offer II 085. 生成匹配的括号
正整数 n 代表生成括号的对数,请设计一个函数,用于能够生成所有可能的并且有效的括号组合。
示例 1:
输入:n = 3 输出:[“((()))”,”(()())”,”(())()”,”()(())”,”()()()”]
示例 2:
输入:n = 1 输出:[“()”]
提示:
●1 <= n <= 8
注意:本题与主站 22 题相同: https://leetcode-cn.com/problems/generate-parentheses/
思路
dfs 回溯法,优先塞入左括号,之后再塞入右括号
解答
1 | |
有效的括号
| Category | Difficulty | Likes | Dislikes |
|---|---|---|---|
| algorithms | Easy (44.53%) | 3588 | - |
Tags
Companies
airbnb | amazon | bloomberg | facebook | google | microsoft | twitter | zenefits
给定一个只包括 ‘(‘,’)’,’{‘,’}’,’[‘,’]’ 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
- 每个右括号都有一个对应的相同类型的左括号。
示例 1:
输入:s = “()” 输出:true
示例 2:
输入:s = “()[]{}” 输出:true
示例 3:
输入:s = “(]” 输出:false
提示:
- 1 <= s.length <= 104
- s 仅由括号 ‘()[]{}’ 组成
1 | |
使括号有效的最少添加
| Category | Difficulty | Likes | Dislikes |
|---|---|---|---|
| algorithms | Medium (73.04%) | 237 | - |
Tags
Companies
只有满足下面几点之一,括号字符串才是有效的:
- 它是一个空字符串,或者
- 它可以被写成 AB (A 与 B 连接), 其中 A 和 B 都是有效字符串,或者
- 它可以被写作 (A),其中 A 是有效字符串。
给定一个括号字符串 s ,在每一次操作中,你都可以在字符串的任何位置插入一个括号
- 例如,如果 s = “()))” ,你可以插入一个开始括号为 “(()))” 或结束括号为 “())))” 。
返回 _为使结果字符串 s 有效而必须添加的最少括号数_。
示例 1:
输入:s = “())” 输出:1
示例 2:
输入:s = “(((“ 输出:3
提示:
- 1 <= s.length <= 1000
- s 只包含 ‘(‘ 和 ‘)’ 字符。
1 | |
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!