丶Yshao level
获赞
65
粉丝
1
关注
3
看过 TA
9
门头沟学院
2020
C++
IP属地:广东
暂未填写个人简介
私信
关注
2019-08-27 22:17
已编辑
门头沟学院 C++
这一题我的思路是定义两个数组分别保存数字和字符,然后判断当前数字和下一个数字字典序列并且要求当前运算符优先级大于等于下一个运算符优先级,于是一小时全花这上面了。。。结果输出还不对,求大佬分享方法,感谢感谢
——佚名:def parse(s2):     l=0     opt=[]     num=[]     for i,c in enumerate(s2):         if c=='*'or c=='/':             num.append(int(s2[l:i]))             l=i+1             opt.append(c)     num.append(int(s2[l:]))     num.sort()     res=""     for i,c in enumerate(opt):         res=res+str(num[i])         res=res+c     res=res+str(num[-1])     return res s=input() s2="" for i,c in enumerate(s):     if c=='-'and s[i-1]!='+'and s[i-1]!='*'and s[i-1]!='*':         s2=s2+'+'     s2=s2+c s_list=s2.split('+') res=[] num2=[] for st in s_list:     if len(st)==1 or len(st)==2:         num2.append(int(st))     elif len(st)>2:         num2.sort()         for c in num2:             if c<0 and res and len(res[-1])<=2:                 res.pop()             res.append(str(c))             res.append('+')         res.append(parse(st))         num2.clear() if len(num2)==0:     res=''.join(res)     print(res) else:     num2.sort()     for c in num2:         if c>0:             res.append("+")         res.append(str(c))     res=''.join(res)     print(res) 丑陋的代码,思路是在所有前边不是* / +号的 -号前插入+号,然后按+号split,按切出来大小大于二的串分割排序,大小大于二的串单独送入parse中分割排序,最后合并。
投递滴滴等公司9个岗位 >
0 点赞 评论 收藏
分享

创作者周榜

更多
关注他的用户也关注了:
牛客网
牛客企业服务