好友
阅读权限20
听众
最后登录1970-1-1
|
回帖奖励 +2 CB吾爱币
第一步:定义两个变长数组a[]、b[],a[]用来存放输入字符串中的数字,b[]用来存放字符串中的运算符
第二步:遍历b[],当b[i]=='*'、'/'、'%'其中之一时,a[i]=a[i](*或/或%)a[i+1],然后将b[i]从数组b中移除,a[i+1]从a中移除
第三步:此时b[]中只有‘+’、‘-’两种运算符,依次计算即可
例如字符串s="'12-3.6*2+8.4/4+2'"
此时数组a=[12,3.6,2,8.4,4,2]
数组b=['-','*','+','/','+']
第一次遍历,当 i=1时,b[i]='*',故a[i]=a[i]*a[i+1]=3.6*2=7.2,b.remove(b[i]),a.remove(a[i+1])
此时a=[12,7.2,8.4,4,2],b=['-','+','/','+']
第二次遍历,当i=2时,b[i]='/',故a[i]=a[i]/a[i+1]=8.4/4=2.1,b.remove(b[i]),a.remove(a[i+1])
此时a=[12,7.2,2.1,2],b=['-','+','+']
接下来因为只剩下加减操作,不存在优先级高低问题,依次执行即可 |
免费评分
-
查看全部评分
|