建个大型网站需,企业邮箱注册免费申请,企业彩页设计模板,微信小程序管理平台入口给定一个包含正整数、加()、减(-)、乘(*)、除(/)的算数表达式(括号除外)#xff0c;计算其结果。
表达式仅包含非负整数#xff0c;#xff0c; - #xff0c;*#xff0c;/ 四种运算符和空格 。 整数除法仅保留整数部分。
示例 1:
输入: “32*2” 输出: 7
代码
clas…给定一个包含正整数、加()、减(-)、乘(*)、除(/)的算数表达式(括号除外)计算其结果。
表达式仅包含非负整数 - */ 四种运算符和空格 。 整数除法仅保留整数部分。
示例 1:
输入: “32*2” 输出: 7
代码
class Solution {public int calculate(String s) {int i0,ns.length();LinkedListCharacter stacknew LinkedList();//符号栈LinkedListInteger stack1new LinkedList();//数值栈while (in){if(s.charAt(i) ){//跳过空格i;continue;}if(Character.isDigit(s.charAt(i)))//提取数值进栈{int num0;while (inCharacter.isDigit(s.charAt(i))){numnum*10s.charAt(i)-0;i;}stack1.addLast(num);}else{char chs.charAt(i);if(ch||ch-)//加减号入栈{stack.add(ch);i;}else {//乘除号计算结果后入栈i;int num20;while (s.charAt(i) ) i;while (inCharacter.isDigit(s.charAt(i))){num2num2*10s.charAt(i)-0;i;}if(ch*)stack1.add(num2*stack1.removeLast());else stack1.add(stack1.removeLast()/num2);}}}while (!stack.isEmpty()){//计算剩下的-运算int astack1.removeFirst();int bstack1.removeFirst();if(stack.removeFirst()) {stack1.addFirst(ab);}else stack1.addFirst(a-b);}return stack1.getFirst();}
}