实现一个基本的计算器来计算一个简单的字符串表达式的值。
示例 :
输入: “6+5/3-2*2”
输出: 3
因为乘除的优先级大于加减,我们现实现加减运算
我们使用数据结构栈Stack,是先进后出,有进栈和出栈两种
方法一般用到的有如下的方法:
IsEmpty() //判断是否为满
bool IsFull() //判断是否为空
pop(); //出栈并获得栈顶值
int push(const T& data); //进栈
getPop() 获得栈顶元素值
clear() //清空栈
首先解决的问题是:
字符123 如何转化为数字123
依次读取每个字符
110+2
1210+3
num = num*10+(a-‘0’);
例如计算6-3+2我们放入栈中就是
+6 <--------指针
-3
+2
6+(-3)+2
然后依次取出栈中的数经行相加,就可以得到结果:
具体代码如下:
class Solution {
public int calculate(String s) {
s = s.replace(" ","");
Stack<Integer> stk = new Stack();
int num = 0;
char fu = '+';
设初始的符号为+,表示正数,
for(int i =0;i<s.length();i++){
char a = s.charAt(i);
if(isnumber(a)){