Zerojudge j607. 先加減後乘除

題解

時間給的蠻充裕的,可以慢慢找到左右括號然後把裡面的東西替換成算好的答案。最後再先加減後乘除。

Python 解答

def check_add_mul(s): #計算f()中的數值資料
    result = 1
    for part in list(map(eval, s.split("*"))):
        result *= part
    return result

def check_func_content(s): #檢查逗號,從逗號切開,一段一段檢查是否還有func
    mylist = s.split(",")
    val    = list(map(check_add_mul, mylist))
    return max(val)-min(val)
    
expr = input()
left = [ i for i,c in enumerate(expr) if c=="("]
while left:
    i = left.pop()
    right = expr.index(")", i)
    content = expr[i+1:right:1] #拿出括號中所有的數字
    ans  = check_func_content(content)
    expr = expr[0:i-1]+str(ans)+expr[right+1::]

print(check_add_mul(expr))