```python
dis={"+":1,"-":1,"*":10,"/":10}
def check(list,i,j,m):
if j-i==2: #去除括号里没有运算符的,如(a)
m.append(i)
m.append(j)
elif list[i+1]=="(" and list[j-1]==")": #去除括号叠加的,如:((a))
m.append(i)
m.append(j)
elif i-1>=0 and list[i-1]=="/": #去除括号前面是/的,如:a/(e*c)
return
else:
falg=0
wmax=1
nmin=2
if i-1>=0 and list[i-1] in ["*","/","+","-"]:#判断括号两边的运算符,找到权值最大
wmax=max(wmax,dis[list[i-1]])
if j+1<=len(list)-1 and list[j+1] in ["*","/","+","-"]:
wmax=max(wmax,dis[list[j+1]])
for k in range(i+1,j):#判断括号两边的运算符,找到权值最大
if list[k]=="(":#括号中如果还有括号,则跳过括号里的内容
falg+=1
elif list[k]==")":
falg-=1
elif falg==0 and list[k] in ["*","/","+","-"]:
nmin=min(nmin,dis[list[k]])
if nmin>wmax : #去除括号里运算符大于外的运算符,如 a+(b*c)
m.append(i)
m.append(j)
elif nmin==wmax : #如果运算符权值相等 如a*(b*v) ,a-(c+g)
if i-1>=0 and list[i-1]=="-":#如果括号前边的为‘-’,那括号就不能去除
return
else: #当括号前边的不为”-“,去除括号
m.append(i)
m.append(j)
while True:
flagl=[]
m=[]
flag=-1
k=list(input().strip())
for i in range(len(k)):
if k[i]=="(":
flagl.append(i)
elif k[i]==")":
check(k,flagl[-1],i,m)
flagl.pop()
str=""
for i in range(len(k)):
if i not in m:
str+=k[i]
print(str)
```
[剔除多余括号 解题报告(^-^ 感谢大佬)](https://blog.csdn.net/weixin_39872717/article/details/77980985?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522160281188219724839205341%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=160281188219724839205341&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_v2~rank_v28-1-77980985.first_rank_ecpm_v3_pc_rank_v2&utm_term=%E5%8E%BB%E6%8E%89%E5%A4%9A%E4%BD%99%E6%8B%AC%E5%8F%B7&spm=1018.2118.3001.4187 "剔除多余括号 解题报告")
0.0分
0 人评分