leetcode-227-基本计算器||
public int calculate(String s) { int len = s.length(); Stack<Integer> s1 = new Stack<>(); // 操作数栈 int num = 0; char preSign = '+'; // 为了方便计算,1+1+1 ====> +1+1+1 for (int i = 0; i < len; i++) { // 只考虑数字和运算符号 // 遇到数字直接入栈 if (s.charAt(i) >= '0' && s.charAt(i) <= '9') { // 不要直接放入,要看他后面是不是数字 num = num * 10 + s.charAt(i) - '0'; } if (isOperator(s.charAt(i)) || i == len-1){ switch(preSign) { // 乘除直接运算(因为优先级高)后再入栈,加减入栈 case '+': s1.push(num); break; case '-': s1.push(-num); break; case '*': s1.push(s1.pop() * num); break; default: s1.push(s1.pop() / num); } preSign = s.charAt(i); num = 0; } } // 根据操作数,计算最终结果 int res = 0; while (!s1.isEmpty()) { res += s1.pop(); } return res; }
作者:Ryanjie
出处:http://www.cnblogs.com/ryanjan/
本文版权归作者和博客园所有,欢迎转载。转载请在留言板处留言给我,且在文章标明原文链接,谢谢!
如果您觉得本篇博文对您有所收获,觉得我还算用心,请点击右下角的 [推荐],谢谢!