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