标签:
题目来自Leetcode
Given a string of numbers and operators, return all possible results from computing all the different possible ways to group numbers and operators. The valid operators are +, - and *.
Input: "2-1-1".
((2-1)-1) = 0 (2-(1-1)) = 2
Output: [0, 2]
Input: "2*3-4*5"
(2*(3-(4*5))) = -34 ((2*3)-(4*5)) = -14 ((2*(3-4))*5) = -10 (2*((3-4)*5)) = -10 (((2*3)-4)*5) = 10
Output: [-34, -14, -10, -10, 10]
Program language: Python 3.4
成功运行的第N版本
def calculat(value,oper):
#print(input)
result = 0
if len(oper) == 1:
a = value[0]
b = value[1]
if oper[0] == '+':
result = (a+b)
elif oper[0] == '-':
result = (a-b)
elif oper[0] == '*':
result = (a*b)
return result
def diffWaysToCompute(out, input):
i=0
value = []
operator = []
while i<len(input):
if i%2 == 0:
value.append(int(input[i]))
else:
operator.append(input[i])
i=i+1
itercalculate(out,value,operator)
return out
'''
在diffWaysToCompute 函数中对输入的字符串做处理,将数字与运算符分别存储在两个list中。
如此当某个运算出现负数时能方便处理
'''
def itercalculate(out,value,oper):
if len(oper) == 1:
out.append(calculat(value,oper))
return out
else:
i=0
while i<len(oper):
#print ('before del',value,oper,i)
result = calculat(value[i:i+2],oper[i])
if i==0:
subvalue = value[1:]
suboper = oper[1:]
elif i==len(oper)-1:
subvalue = value[0:i+1]
suboper = oper[0:i]
else:
subvalue = value[0:i+1] + value[i+2:]
suboper = oper[0:i] + oper[i+1:]
subvalue[i] = result
itercalculate(out,subvalue,suboper)
i=i+1
#s='1+2+3'
s="2*3-4*5"
#s='2-1-1'
out=[]
diffWaysToCompute(out,s)
print(out)
'''
>>>
[10, -14, -10, -10, -14, -34]
'''
得到期望结果的第N+1版本。
更新后的while 循环体:
while i<len(oper):
#print ('before del',value,oper,i)
result = calculat(value[i:i+2],oper[i])
if i==0:
subvalue = value[1:]
suboper = oper[1:]
elif i==len(oper)-1:
subvalue = value[0:i+1]
suboper = oper[0:i]
else:
subvalue = value[0:i+1] + value[i+2:]
suboper = oper[0:i] + oper[i+1:]
subvalue[i] = result
itercalculate(out,subvalue,suboper)
i=i+1
输出期望结果:
>>>
[10, -14, -10, -10, -14, -34]
版权声明:本文为博主原创文章,未经博主允许不得转载。
Leetcode Algorithm No.241Different Ways to Add Parentheses
标签:
原文地址:http://blog.csdn.net/huxian370/article/details/48133365