//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();
    }
}