//Character.isDigit检查字符是否是数字
//char类型的数字-'0'可以直接当int运算。
//这是因为Java中的字符类型(char)本质上是Unicode编码,数字字符’0’到’9’在Unicode中是连续的。
//所以当你执行一个数字字符减去’0’时,实际上是在计算它们的Unicode码点差值。
import java.util.*;
public class Solution {
/**
* @param str string字符串
* @return long长整型
*/
public long legalExp (String str) {
// write code here
Stack<Long> sk=new Stack<>();
for(int i=0;i<str.length();i++){
char A=str.charAt(i);
if(Character.isDigit(A)){
long Sum=0;
while(i<str.length()&&Character.isDigit(str.charAt(i))){
Sum=Sum*10+(str.charAt(i)-'0');
i++;
}
i--;
sk.push(Sum);
}else if(A=='#'){
continue;
}else{
long b=sk.pop();
long a=sk.pop();
long C=0;
switch(A){
case '+':C=a+b ;break;
case '-':C=a-b;break;
case '*':C=a*b;break;
}
sk.push(C);
}
}
return sk.pop();
}
}