python括号算法_[蓝桥杯][算法训练VIP]删除多余括号-题解(Python代码)

这段代码展示了如何使用Python实现删除多余括号的算法,主要处理括号内外的运算符权值比较,以确定是否可以删除括号。检查括号内外的运算符,根据运算符的优先级来决定是否移除括号。代码适用于蓝桥杯算法训练题目。
摘要由CSDN通过智能技术生成

```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 人评分

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值