栈解析字符串
2020-03-08 本文已影响0人
madao756
0X00 模板题目
使用栈去解析字符串的一个特征是:
最后栈中只剩下一个元素最后那个元素就是答案
class Solution:
def parseTernary(self, expression: str) -> str:
# 首先因为我们人去做也是从右往左去做
# 用栈去解析字符串
# 所以这个栈也是从右往左
stack = []
conditonState = False
for i in range(len(expression)-1, -1, -1):
c = expression[i]
if c == ":": continue
elif c == "?":
conditonState = True
else:
if conditonState:
if c == "T":
res = stack.pop()
# pop 错误答案
stack.pop()
# 将 res 重新 append 进去
stack.append(res)
else:
stack.pop()
conditonState = False
else:
stack.append(c)
return stack[-1]
0X01 注意事项
注意解析的方向, 像上面个题目是从右向左, 因为我们人去做也是从右向左