滴滴笔试

滴滴笔试
第一行包含一个整数n,表示算式的长度,即包含n个数字和n-1个运算符。(1≤n≤100000)。
第二行包含一个含有n个非0整数和n-1个运算符的算式,整数与运算符用空格隔开,运算符包括“+,-,*,/”,整数的绝对值不超过1000。
例:
输入:
6
3 + 2 + 1 + -4 * -5 + 1
输出:
1 + 2 + 3 + -5 * -4 + 1


n=int(input())
ss=input()
s1=ss.split(' ')
s2=[s for s in s1 if s not in ['+','-','*','/']]
opt=[s for s in s1 if s  in ['+','-','*','/']]

flag=1
while flag:
    flag=0
    for i in range(len(opt)):       
        if int(s2[i])>int(s2[i+1]):
            if opt[i] == '+' and opt[i+1] not in ['*','/']:               
                s2[i],s2[i+1]=s2[i+1],s2[i]
                flag=1
            elif opt[i]=='*' and (i<1 or opt[i-1]!='/'):                
                s2[i],s2[i+1]=s2[i+1],s2[i]
                flag=1
            elif opt[i]=='/' and i>0 and opt[i-1]=='/':               
                s2[i],s2[i+1]=s2[i+1],s2[i]
                flag=1
            elif opt[i]=='-' and i>0 and opt[i-1]=='-':                
                s2[i],s2[i+1]=s2[i+1],s2[i]
                flag=1              
res=''
for i in range(len(opt)):
    res+=s2[i]
    res+=' '
    res+=opt[i]
    res+=' '
res+=s2[i+1]    
print(res)
    
        

#滴滴##笔试题目#
全部评论
交卷之后才写的,所以不一定100%哦
点赞 回复 分享
发布于 2019-08-28 14:54
100%吗?第二题你做了吗
点赞 回复 分享
发布于 2019-08-28 14:51

相关推荐

07-11 22:27
中南大学 Java
程序员牛肉:学历的话没问题。但是没问题的也就只有学历了。 其实你的整体架构是正确的,博客接着干。但是项目有点过于简单了。从后端的角度上讲,你这也就是刚入门的水平,所以肯定约面试够呛。 如果你要应聘后端岗位,那你第一个项目竟然是仿写操作系统。这个你要面试官咋问你。你一定要记住一点,你简历上写的所有的东西,都是为了证明你有能力胜任当前的岗位,而不是为了证明你自己会什么。 如果你只是浅浅的做几个项目,描述也都是烂大街。技术点也都是各种混水类的配置类需求,那你就不要幻想自己能走多远。一定要保持思考,保持学习。
点赞 评论 收藏
分享
评论
点赞
4
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务