Parenthesis/Brackets 使用堆栈算法匹配和最大元素
Parenthesis/Brackets Matching and Maximum Elements using Stack algorithm
问题:假设我们要使用堆栈处理这个表达式 ( [ ( { [ ] [ ] } ( ( ( ) ) ) ) { } ] )
。任一时刻栈上元素的最大数量是多少?
我知道堆栈按 LIFO 顺序运行,所以我不确定如何将它与最大元素数相匹配,以及它与表达式有何关系。这个问题对我来说不清楚。请问您怎么看?
我试图回答它并得到 9,但我发现根据我得到的答案,堆栈中任何时候的最大元素数是 6。
如果你有左括号,你把它放在堆栈上。如果你有一个右括号与堆栈顶部的左括号匹配,你就从堆栈中弹出这个括号,否则你就把它放在堆栈上。在此表达式中,堆栈将如下所示:
(
( [
( [ (
( [ ( {
( [ ( { [
( [ ( {
( [ ( { [
( [ ( {
( [ (
( [ ( (
( [ ( ( (
( [ ( ( ( (
( [ ( ( (
( [ ( (
( [ (
( [
( [ {
问题:假设我们要使用堆栈处理这个表达式 ( [ ( { [ ] [ ] } ( ( ( ) ) ) ) { } ] )
。任一时刻栈上元素的最大数量是多少?
我知道堆栈按 LIFO 顺序运行,所以我不确定如何将它与最大元素数相匹配,以及它与表达式有何关系。这个问题对我来说不清楚。请问您怎么看?
我试图回答它并得到 9,但我发现根据我得到的答案,堆栈中任何时候的最大元素数是 6。
如果你有左括号,你把它放在堆栈上。如果你有一个右括号与堆栈顶部的左括号匹配,你就从堆栈中弹出这个括号,否则你就把它放在堆栈上。在此表达式中,堆栈将如下所示:
(
( [
( [ (
( [ ( {
( [ ( { [
( [ ( {
( [ ( { [
( [ ( {
( [ (
( [ ( (
( [ ( ( (
( [ ( ( ( (
( [ ( ( (
( [ ( (
( [ (
( [
( [ {