编程实现:简单算术题计算器
编程实现:简单算术题计算器
题目描述:
给定一道没有括号的四则混合运算算术题(可能包含多余的空格),请编程计算出结果。
运算规则如下:
- 既有乘、除法又有加、减法的,要先算乘除法,再算加减法
- 同级运算时,要从左往右按顺序计算
- 所有除法运算的结果都只保留整数部分(直接舍弃小数部分)
例如: 当算术题为 '2 + 3 * 4 - 10 / 6 + 1 / 2 * 4' 时,优先计算乘除法,有 3 * 4 = 12,10 / 6 = 1,1 / 2 * 4 = 0;然后再计算加减法,2 + 3 * 4 - 10 / 6 + 1 / 2 * 4 = 2 + 12 - 1 + 0 = 13,故输出 13。
输入描述 输入一个字符串,表示算术题,5≤字符串长度≤100000,字符串中只包含数字字符以及'+'、'-'、'*'、'/'运算符,不含括号,可能包含空格; 算式中的运算数范围:1≤运算数≤200。
输出描述 输出一个整数,表示算术题的计算结果。
题目数据保证算式的每一步运算的结果都在-2×10^9~2×10^9之间。
样例输入 2 + 3 * 4 - 10 / 6 + 1 / 2 * 4 样例输出 13
思路: 模拟计算过程,先处理乘除法,再处理加减法。用一个栈保存数字和运算符,每次遇到数字直接入栈,遇到运算符则需要判断是否需要优先计算,如果需要则从栈中弹出两个数字与该运算符进行计算,结果再入栈。最后栈中剩下的数字即为最终计算结果。
时间复杂度: O(n)
参考代码:
# 代码实现部分
原文地址: http://www.cveoy.top/t/topic/ojHz 著作权归作者所有。请勿转载和采集!