假设我们有一个用(+,-,*,/)表示一个数学表达式的字符串,这里/表示整数除法,我们必须在不使用任何内置函数的情况下求值并返回结果。
因此,如果输入像s =“ 2 + 3 * 5/7”,那么输出将是4,因为2 +(((3 * 5)/ 7)= 4
让我们看下面的实现以更好地理解-
from math import floor, trunc class Solution: def solve(self, s): s = list(s[::-1]) def get_value(): sign = 1 if s and s[-1] == "-": s.pop() sign = -1 value = 0 while s and s[-1].isdigit(): value *= 10 value += int(s.pop()) return sign * value def get_term(): term = get_value() while s and s[-1] in "*/": op = s.pop() value = get_value() if op == "*": term *= value else: term = floor(1.0 * term / value) return term ans = get_term() while s: op, term = s.pop(), get_term() if op == "+": ans += term else: ans -= term return ans ob = Solution()s = "2+3*5/7" print(ob.solve(s))
"2+3*5/7"
输出结果
4