滴滴笔试

滴滴笔试
第一行包含一个整数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:51
交卷之后才写的,所以不一定100%哦
点赞 回复 分享
发布于 2019-08-28 14:54

相关推荐

不愿透露姓名的神秘牛友
11-24 20:55
阿里国际 Java工程师 2.7k*16.0
程序员猪皮:没有超过3k的,不太好选。春招再看看
点赞 评论 收藏
分享
无情咸鱼王的秋招日记之薛定谔的Offer:好拒信,偷了,希望有机会用到
点赞 评论 收藏
分享
点赞 4 评论
分享
牛客网
牛客企业服务