给出像
这样的输入a { b c d { e f } g }
我想在时间(字母或大括号)解析一个标记。当我击中第一个右大括号}
时,我需要知道自上一个左大括号(e和f = 2)以来有多少元素。然后当我在那之后击中那个时,我需要4(b,c,d,g)。
逐个抓取代币很容易,但是......我不知道如何计算它们。我在考虑Stack<int>
,但我不能修改顶部元素来增加它?
答案 0 :(得分:8)
为什么不在<{1}}变量中保留那个,而不是尝试修改top元素。
编辑:如果你想保持堆栈本身的所有状态,你总是可以将顶部元素视为一个变量,通过执行pop-increment-push来改变它。此时,操作是:
效率可能略低,但我认为它实际上更优雅。