电商网站建设系统中国互联网协会官网
代码实现中,若读到一个运算符,或者遍历到字符串末尾,即认为是遍历到了数字末尾。处理完该数字后,更新 preSign为当前遍历的字符。减号的时候则压入-dig即可
class Solution {public int calculate(String s) {Stack<Integer> stack = new Stack<Integer>();char preSign='+';int sum=0;int dig=0;int n=s.length();for(int i=0;i<n;i++){//为什么是++ichar temp= s.charAt(i);if(Character.isDigit(temp)){dig =dig*10+temp-'0';}//整体就是一遇到符//i==n-1是为了达到字符串结尾时将数字放入栈中if(i==n-1||!Character.isDigit(temp)&& temp != ' ' ){switch(preSign){default:stack.add(dig);break;case '-':stack.add(-dig);break;case '*':stack.add(stack.pop()*dig);break;case '/':stack.add(stack.pop()/dig);break;}preSign=temp;dig=0;}}for(int number:stack){sum=sum+number;}return sum;}
}