计算器(二)
https://www.nowcoder.com/practice/a9c170bfaf7349e3acb475d786ab1c7d
import java.util.*;
/**
* NC241 计算器(二)
* @author d3y1
*/
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param s string字符串
* @return int整型
*/
public int calculate (String s) {
int len = s.length();
int result = 0;
int num = 0;
char sign = '+';
Stack<Integer> stack = new Stack<Integer>();
for(int i=0; i<len; i++){
char ch = s.charAt(i);
if(Character.isDigit(ch)){
num = num * 10 + (ch-'0');
}
// i==len-1 => 最后一次运算
if(!Character.isDigit(ch) || i==len-1){
switch(sign){
case '+':
{
stack.push(num);
break;
}
case '-':
{
stack.push(-num);
break;
}
case '*':
{
stack.push(stack.pop()*num);
break;
}
case '/':
{
stack.push(stack.pop()/num);
break;
}
default: break;
}
sign = ch;
num = 0;
}
}
while(!stack.isEmpty()){
result += stack.pop();
}
return result;
}
}