wordpress站内搜索慢,wordpress超酷主题,中企动力300官网,wordpress更改图片大小给你一个字符串表达式 s #xff0c;请你实现一个基本计算器来计算并返回它的值。
整数除法仅保留整数部分。
示例 1#xff1a;
输入#xff1a;s “32*2” 输出#xff1a;7
解题思路
利用两个栈#xff0c;一个记录操作数#xff0c;一个记录操作符#xff0c;…给你一个字符串表达式 s 请你实现一个基本计算器来计算并返回它的值。
整数除法仅保留整数部分。
示例 1
输入s “32*2” 输出7
解题思路
利用两个栈一个记录操作数一个记录操作符用-1和1表示操作符加减
代码
class Solution {public int calculate(String s) {StackInteger stacknew Stack();StackInteger characterStacknew Stack();int ns.length();int i 0,sign1,cur0;while ( i n) {char c s.charAt(i);if(c ){i;continue;}if(Character.isDigit(c))//取出操作数进栈{int sum0;while (i nCharacter.isDigit(s.charAt(i))){sum*10;sums.charAt(i)-0;i;}stack.push(sum);i--;}else {if(c||c-){if(!characterStack.isEmpty())//前面出现同级的加减运算计算前面的{stack.push(stack.pop()*characterStack.pop()stack.pop());}characterStack.push(c?1:-1);//操作符入栈}else// 操作符为*/{int sum0;i;while (s.charAt(i) ) i;while (i nCharacter.isDigit(s.charAt(i)))//取下一个操作数进行操作{sum*10;sums.charAt(i)-0;i;}if(c*)stack.push(stack.pop()*sum);elsestack.push(stack.pop()/sum);i--;}}i;}return stack.size()1?stack.pop():stack.pop()*characterStack.pop()stack.pop();}
}