
计算器的实现考虑使用栈。
class Solution {
public int calculate(String s) {
int length = s.length();
if(s==null || length==0){
return 0;
}
int num = 0;
char sign = '+';
Stack<Integer> stack = new Stack<Integer>();
for(int i=0;i<length;i++){
if(Character.isDigit(s.charAt(i))){
num = num*10+s.charAt(i)-'0';
}
if(!Character.isDigit(s.charAt(i)) && ' '!=s.charAt(i) ||i==length-1 ){
if(sign=='+'){
stack.push(num);
}
if(sign=='-'){
stack.push(-num);
}
if(sign=='*'){
stack.push(stack.pop()*num);
}
if(sign=='/'){
stack.push(stack.pop()/num);
}
sign = s.charAt(i);
num = 0;
}
}
int re = 0;
for(int i:stack){
re += i;
}
return re;
}
}
public int calculate(String s) {
int length = s.length();
if(s==null || length==0){
return 0;
}
int num = 0;
char sign = '+';
Stack<Integer> stack = new Stack<Integer>();
for(int i=0;i<length;i++){
if(Character.isDigit(s.charAt(i))){
num = num*10+s.charAt(i)-'0';
}
if(!Character.isDigit(s.charAt(i)) && ' '!=s.charAt(i) ||i==length-1 ){
if(sign=='+'){
stack.push(num);
}
if(sign=='-'){
stack.push(-num);
}
if(sign=='*'){
stack.push(stack.pop()*num);
}
if(sign=='/'){
stack.push(stack.pop()/num);
}
sign = s.charAt(i);
num = 0;
}
}
int re = 0;
for(int i:stack){
re += i;
}
return re;
}
}
614

被折叠的 条评论
为什么被折叠?



