
经典的栈

变体1——不止是小括号
思路变体:【经典的栈】 + 【Map】
▊【Q20】(ez) 有效的括号(括号匹配问题)
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]'的字符串,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。
示例 1:
输入: “([{}])”
输出: true
示例 2:
输入: “([)]”
输出: false
变体2——自己生成括号
思路变体:【回溯】 + 【左右括号计数】
这里利用了一个括号字符串的性质进行【剪枝】:当右括号数量超过左括号时,必然串无效——这个性质之后还会再派上大用场
▊【Q22】(md) 括号生成
数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。
示例:
输入:
n = 3
输出:[
“((()))”,
“(()())”,
“(())()”,
“()(())”,
“()()()”
]
究极变体,由定性到定量——寻找最长有效括号的长度
我们将从【栈】【动态规划】【左右括号计数】三个角度去攻克这个问题
【Q32】(hd) 最长有效括号
给定一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长的包含有效括号的子串的长度。
示例 1:输入: “(()”
输出: 2
示例 2:
输入: “)()())”
输出: 4
示例 3:
输入: “()(())”
输出: 4



部分题目来源
【Leetcode Q20】有效的括号
【Leetcode Q22】括号生成
【Leetcode Q32】最长有效括号
End ♬ By a Lolicon
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/13494.html