关注
import sys
class Soloution:
def get_lisp_ast_result(self, eavl_str):
if len(eavl_str) < 2 or eavl_str[0] != '(' or eavl_str[-1] != ')':
print(-1)
return
# store infos with a stack
stack = list()
index = 0
space_count = 0
while index < len(eavl_str):
# check if two or more spaces
if space_count > 1:
print(-1)
return
if eavl_str[index] == ' ':
index += 1
space_count += 1
continue
space_count = 0
if eavl_str[index] != ')':
stack.append(eavl_str[index])
else:
tmp = list()
flag = False
while len(stack) > 0:
val = stack.pop()
if val == '(':
flag = True
break
tmp.insert(0, val)
if not flag:
print(-1)
return
rs = None
# eavl strs
if tmp[0] == '+':
rs = self.do_add(tmp)
elif tmp[0] == '*':
rs = self.do_multi(tmp)
elif tmp[0] == '^':
rs = self.do_iadd(tmp)
if rs is None:
print(-1)
return
else:
# end with legal ast str
if len(stack) == 0:
print(rs)
return
stack.append(str(rs))
index += 1
if len(stack) > 1 or not stack[0].isnumeric():
print(-1)
else:
print(stack[0])
def do_add(self, strs):
if len(strs) != 3 or not strs[1].isnumeric() or not strs[2].isnumeric():
return
return int(strs[1]) + int(strs[2])
def do_multi(self, strs):
if len(strs) != 3 or not strs[1].isnumeric() or not strs[2].isnumeric():
return
return int(strs[1]) * int(strs[2])
def do_iadd(self, strs):
if len(strs) != 2 or not strs[1].isnumeric():
return
return int(strs[1])+1
if __name__ == '__main__':
args = sys.stdin.readline().strip()
solution = Soloution()
solution.get_lisp_ast_result(args)
查看原帖
点赞 6
相关推荐
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 26届的你,投了哪些公司? #
9206次浏览 131人参与
# 我对___祛魅了 #
18973次浏览 183人参与
# 中兴秋招 #
188271次浏览 2120人参与
# 如何快速融入团队? #
6866次浏览 89人参与
# 通信/硬件求职避坑tips #
85706次浏览 868人参与
# 和同事相处最忌讳的是__ #
9509次浏览 103人参与
# 你跟室友的关系怎么样? #
1752次浏览 38人参与
# 简历上的经历如何包装 #
7428次浏览 210人参与
# 工作中哪个瞬间让你想离职 #
39982次浏览 327人参与
# 什么样的背景能拿SSP? #
10881次浏览 91人参与
# 你遇到最难的面试题目是_ #
2461次浏览 52人参与
# 你最讨厌面试问你什么? #
5868次浏览 109人参与
# 职场常用语录大全 #
5881次浏览 42人参与
# 我和mentor的爱恨情仇 #
61301次浏览 373人参与
# 大疆今年的机械笔试难吗? #
43531次浏览 477人参与
# 打工人的精神状态 #
66097次浏览 1094人参与
# 哪些公司校招卡第一学历 #
91425次浏览 396人参与
# 元戎启行求职进展汇总 #
35496次浏览 270人参与
# 你最希望上岸的公司是? #
133861次浏览 696人参与
# 实习生活中那些难忘的瞬间 #
161668次浏览 2407人参与
# 机械人,秋招第一次笔试的企业是哪家? #
42909次浏览 339人参与